1

新しい行を引用に保存しようとしていますが、Yii は QuoteRow を保存しません。新しいサービスのみを保存します (はい、DB 構造は少し奇妙です)。私はそれを理解できないようです。行が保存されない場合、$qr->save() は 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 を検証しようとしましたが、完全に有効であると主張しています!

4

5 に答える 5

1

デバッグ モードを使用するか、モデル内で print_r($model) を使用して beforeValidate、beforeSave メソッドを使用します。

すべての属性が設定されている場合は、新しいデータを保存する必要があります。明らかに何かが欠けています。

于 2013-04-02T18:48:09.427 に答える
1

私は同じ問題を抱えていましたが、beforSave メソッドを忘れていました。false が返されましたが、エラーを設定していませんでした。したがって、getErrors メソッドの戻り配列は空でした。

于 2013-11-30T07:12:04.313 に答える
0

同じコントローラで 2 つのモデルを使用しています。「QuoteRows」のすべてのフィールドを「Services モデル」でパブリックに「Services」にインポートすることをお勧めします。また、保存中に POST メソッドを使用して値を取得し、QuoteRows モデルを介して保存します。「サービス モデル」にも検証の条件を追加できます。

于 2015-01-31T07:56:50.703 に答える