yaleksandr89
@yaleksandr89
Junior PHP developer

RedBean не сохраняет поле с типом enum, в чем проблема?

Здравствуйте.
С orm дело почти не имел, может туплю на какой-то элементарщине :\.
Есть таблица:
create table `order`
(
    id        int unsigned auto_increment
        primary key,
    user_id   int unsigned                                not null,
    status    enum ('0', '1') default '0'                 not null,
    date      timestamp       default current_timestamp() not null,
    update_at timestamp                                   null,
    currency  varchar(10)                                 not null,
    note      text                                        null
)
    charset = utf8;


К этой таблице делаю запрос используя RedBean, при запросе должно быть изменено два поля:
  1. update_at ‒ дата изменения заказа (собственно момент клика по кнопке, который отправляет запроса)
  2. status ‒ дефолтно 0 (заказ в обработке, должен меняться на 1)

Вроде бы правильно
public function changeAction(): void
{
    $orderId = $this->getRequestId(); // получаю id
    $status = !empty($_GET['status']) ? '1' : '0'; // проверяю какой статус пришел и какой нужно установить
    $order = R::load('order', $orderId); // вытаскиваю запись
    if (!$order) {
        throw new RuntimeException('Page not found!', 404);
    }
    $order->status = $status; // устанавливаю нужный статус (в данном случае '1')

    $order->update_at = date('Y-m-d H:i:s'); // устаналиваю дату изменения
    R::store($order); // сохраняю изменения
    $_SESSION['success'] = 'The changes are saved';
    redirect();
}


В итоге получается следующая ситуация: поле update_at меняется (т.е. ему присваиваться дата, а вот поле enum остается прежним). Почему грешу на ORM, вардампил данный баг и до этой строки: R::store($order); // сохраняю изменения все отрабатывает, вот дамп:
5dc441014da75649671362.png

То есть, как я понимаю, изменения вносятся, но при сохранение (R::store($order);) почему-то меняеться только одно значение. С чем это может быть связано?

UPD: Временно решил проблему, сменив тип поля с enum, на text (с значением по умолчанию 0), но не могу понять почему Redbean не может поменять значение в поле enum o_O.

Гуглежка никак не помогла
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы