我正在尝试将数据保存到订单表中。但save方法返回NULL。我也提供了数据。
这是我想要做的代码。
$OrderData = [
'order_name' => 56,
'order_status_id' => '2',
'order_date' => date('Y-m-d H:i:s'),
'order_address' => '',
'order_suburb' => '',
'order_state' => '',
'order_postcode' => '',
'order_country' => '',
'client_id' => 55
];
$this->loadModel('Orders');
$orderData = $this->Orders->newEntity($OrderData, ['validate' => false]);
debug($this->Orders->save($orderData));die;
var_dump($this->Orders->save($orderData));die;
debug返回false。 var_dump返回bool(false)。 我甚至无法检查蛋糕ORM生成的SQL查询,因为保存方法不是对象。 我试图从登录控制器执行此操作。 $ orderData是一个包含数据的实体,它不是空的。
答案 0 :(得分:1)
尝试debug($orderData->getErrors());
只是为了确保实体对象上没有验证错误。
OR
直接对实体使用error(),例如pr($orderData->errors());die;
。但是,$entity->errors()
方法自3.4.0起已弃用,应替换为$entity->getErrors()
。
答案 1 :(得分:0)
在CakePHP ['validate' => false]
中,不会验证您的字段(创建或更新时需要的字段),我们可以说validationDefault()
验证不会验证,但会验证buildRules()
规则(存在于规则和唯一规则中)。所以我收到错误是因为我的client_id在Clients表中不存在。
我使用方法errors()
调试了我的代码,例如$orderData->errors();
答案 2 :(得分:-1)
试试这个:
$OrderData = [
'order_name' => 56,
'order_status_id' => '2',
'order_date' => date('Y-m-d H:i:s'),
'order_address' => '',
'order_suburb' => '',
'order_state' => '',
'order_postcode' => '',
'order_country' => '',
'client_id' => 55
];
$this->loadModel('Orders');
$saveData = $this-> Orders->newEntity();
$saveData = $this-> Orders->patchEntity($saveData, $OrderData);
$saveData = $this-> Orders->save($saveData);