新记录未保存且没有错误消息

时间:2013-04-02 17:45:39

标签: php activerecord yii

我正在尝试将新行保存到引号中,但Yii不会保存QuoteRow。它只保存新服务(是的,DB结构有点奇怪)。我似乎无法弄明白。如果该行未保存,$ qr-> save()应返回false但不返回false。该服务已成功插入,但引用不是。

$service = new Services;
$service->label = $row['title'] ?: "Övrigt";
$service->is_priced_per_unit = 1;
$service->price_per_unit = $row['price']*0.8;
$service->is_default = 0;
$service->rot_deductable = (int)isset($row['rot']);
$service->rot_deduction_percentage = 0.5;
if (!$service->save()) $this->addError('Kunde inte spara raden',$service->getErrors());
    else{
    $qr = new QuoteRows;
    $qr->quote_service_id = Yii::app()->db->getLastInsertID();
    $qr->quote_id = $id;
    $qr->unit_size = $row['amount'] ?: 0;
    $qr->raw_price = $row['price']*0.8*($row['amount'] ?: 1);
    $qr->is_rot_deductable = isset($row['rot']) ? 1 : 0;
    $qr->is_active = 1;

    if (!$qr->save()) $this->addError('Kunde inte spara raden',$qr->getErrors());
}

如果没有保存$ qr,我应该得到错误。我还尝试使用validate-function验证$ qr,并声称它完全有效!

5 个答案:

答案 0 :(得分:1)

使用调试模式,或在模型中使用带有print_r($ model)的beforeValidate,beforeSave方法;

如果设置了所有属性,则应保存新数据;明显的东西不见了。

答案 1 :(得分:1)

我有同样的问题,但我忘记了beforSave方法。它返回false但我没有设置任何错误。所以getErrors方法的返回数组是空的。

答案 2 :(得分:1)

确保你的beforeSave,afterSave函数返回true

答案 3 :(得分:0)

您在同一个控制器中使用两个型号。最好导入' QuoteRows'中的所有字段。到服务'公开进入服务模式'。保存时使用POST方法获取值并通过QuoteRows模型保存。您可以在服务模型'中添加验证条件。太。

答案 4 :(得分:0)

您可能在模型中使用的事件不会返回true。例如。public function beforeSave() {....... return true;//must return true after everything}

相关问题