2016-08-02 16 views
1

NULLの値を持つことができるparent_idがあります - デフォルトはに設定されています。Yii2の外部キー検証ルール

モデル

... 
[['parent_id'], 'integer'], 
[['parent_id'], 'default', 'value' => 0], 
[['parent_id'], 'exist', 'targetAttribute' => 'id', 'skipOnEmpty' => true], 
... 

しかしルールが動作しませんでしたが存在します。

私は間違っていますか?

UPDATE

今日、私は次のルールを削除し、それが動作します:

... 
[['parent_id'], 'default', 'value' => 0], 
... 

しかし、他の値にデフォルト値を変更したい場合、私は何をしますか?

+0

あなたは、そのルールの 'targetClass'と' targetAttribute'を定義する必要があります。 'id'、 'skipOnEmpty' => true]、 ' – ThanhPV

+0

私は 'targetAttribute'を持っていますが、 'targetClass'はデフォルトで同じモデルです。 – Marsick

+0

なぜこの列に可能な値として「NULL」と「0」の両方があるのか​​尋ねることはできますか?彼らは同じことを意味しないのですか? – Clyff

答えて

3

変更ルールの順序は:

[['parent_id'], 'integer'], 
[['parent_id'], 'exist', 'targetAttribute' => 'id', 'skipOnEmpty' => true], 
[['parent_id'], 'default', 'value' => 0], 
+0

ありがとうございます! 私はルールの順序について考えなかった。 – Marsick