Добрый день!
Появилась необходимость добавить еще 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 — это по сути данные на чтение только.