Денис Друщенко 14 августа 2016 0 3
Добрый день!
Появилась необходимость добавить еще 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

Такая запись появляется при обновлении главной страницы с пустой корзиной…
Никак не могу понять где формируется запрос который потом так ругается.
Подскажите какой файл посмотреть?
3 комментария
Fi1osof1
Fi1osof 19 августа 2016г в 04:10 #
У вас же пишет «Attempt to set NOT NULL field oplata to NULL»
Гугл подсказывает: «Попытка установить NOT NULL поле Oplata к NULL»
А поле у вас запрещено к хранению НУЛЛов. 'null' => false,

Вы значение $oplata = $OrderProduct->oplata проверяете? Нет. Или null разрешите, или вот так напишите:
$oplata = $OrderProduct->oplata? $OrderProduct->oplata: '';
Д
Денис Друщенко 19 августа 2016г в 14:52 #
Нашел проблему.
Пытался записать данные в _OrderProducts
Fi1osof1
Fi1osof 27 августа 2016г в 03:21 #
Да, _OrderProducts — это по сути данные на чтение только.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.