2017-08-04 174 views
0

我试图将数据保存到订单表中。但是save方法返回NULL。我也提供了数据。保存()返回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; 

调试返回false。 var_dump返回bool(false)。 我甚至无法检查由蛋糕ORM生成的SQL查询,因为save方法不是一个对象。 我想从登录控制器执行此操作。 $ orderData是一个包含数据的实体,它不为null。

+1

随着'PR()调试我的代码'你不能告诉null','FALSE'之间'的区别,' '''。调用'save()'后,使用'debug()'作为结果以及实体。 – ndm

+0

debug(),返回false。我现在应该怎么做?顺便说一句,你能说我看看代码是什么原因? @ndm –

+2

如上所示,调用'save()'后调试实体。如果在那里没有发现错误,请检查生成的SQL查询。 – ndm

回答

0

在CakePHP ['validate' => false],不会验证您的域(这是需要在创建或更新域)简单,我们可以说validationDefault()验证不会验证,但会验证buildRules()规则(的存在规则和独特的规则)。所以我得到一个错误,因为我的client_id在客户表中不存在。

我已经使用方法errors(),像$orderData->errors();

-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); 
+0

这是我已经做了。这不起作用。 –

+0

好的你最近的问题是什么?数据没有正确保存或其他东西。 –

+0

数据不保存,而且我的保存方法返回布尔数据而不是对象。 –

1

尝试debug($orderData->getErrors());只是为了确保有实体对象上没有验证错误。

OR

使用错误()直接到实体,如pr($orderData->errors());die;。然而,$entity->errors()方法自3.4.0开始已弃用,应替换为$entity->getErrors()

+0

请注意这行$ this-> Orders-> newEntity($ OrderData,['validate'=> false]);在我的参考代码中。 –

+0

是的,我看到了行:)但我记得我有一个类似的问题,并发现,我有一个验证规则是由保存方法处理,而不是newEntity方法。至少据我记忆。所以我习惯了在保存方法返回false的情况下总是调试$ entity-> getErrors()。 – Simon

+1

有验证规则(编组时间)和应用规则(节省时间),后者可以利用前@ bikash.bilz – ndm