Save()返回NULL,不保存数据

时间:2017-08-04 14:54:25

标签: cakephp cakephp-3.0

我正在尝试将数据保存到订单表中。但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是一个包含数据的实体,它不是空的。

3 个答案:

答案 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);