Добрый день! Появилась необходимость добавить еще 1 поле в заказ. Поле называется OPLATA. Поле будет служить для определения способа оплаты (наличными, платежной картой visa/mastercard) При оформлении заказа клиент будет выбирать способ оплаты и после принятия заказа менеджером в управлении заказами будет кнопка «оплатить» (если выбрана он-лайн оплата). Что я сделал: Добавил в таблицу modx_shopmodx_orders поле oplata varchar(4). Файл shopmodxorder.map.inc.php: 'oplata' => 'opl',
'oplata' => array ( 'dbtype' => 'text', 'precision' => '100', 'phptype' => 'string', 'null' => false, 'default' => 'opl' ), Файл object.class.php protected function prepareObject(& $object){ $oplata = $OrderProduct->oplata;
$object->fromArray(array(
"positions" => $positions,
"total" => $quantity,
"quantity" => $quantity,
"sum" => $sum,
"oplata" =>$oplata,
"paysystem_name" => $oplata,
"discount" => $object->discount,
"original_sum" => $original_sum,
"products_ids" => $products_ids,
)); Как бы все работает.
Данные в таблицу пишутся, данные получить могу. Но в логах появляются не красивые записи: [2016-08-14 20:46:16] (ERROR @ /index.php) ShopmodxOrder: Attempt to set NOT NULL field oplata to NULL Такая запись появляется при обновлении главной страницы с пустой корзиной… Никак не могу понять где формируется запрос который потом так ругается. Подскажите какой файл посмотреть?
У вас же пишет «Attempt to set NOT NULL field oplata to NULL» Гугл подсказывает: «Попытка установить NOT NULL поле Oplata к NULL» А поле у вас запрещено к хранению НУЛЛов. 'null' => false, Вы значение $oplata = $OrderProduct->oplata проверяете? Нет. Или null разрешите, или вот так напишите: $oplata = $OrderProduct->oplata? $OrderProduct->oplata: '';
Нашел проблему. Пытался записать данные в _OrderProducts
Да, _OrderProducts — это по сути данные на чтение только.