Owner (int: id) と Car (int: id, int:owner_id) の 2 つのテーブルを持つモデルがあるとします。
存在しない owner_ids が Car.owner_id フィールドにバインドされるのを避けるために、Car で検証ルールを構築しようとしています。後で DB 例外を処理する代わりにフォームにエラー メッセージを簡単に表示できるため、DB 外部キー チェックを使用するだけでなく、この検証ルールをコードに含めたいと考えています。
したがって、私のモデルでは、次のようなものが必要です。
public function rules() {
return array(
array('owner_id', 'in', 'range' => array(11, 12, 13)),
);
}
ここで、11、12、13 は既存の所有者 ID です。
これらの ID は、次のようなコードで見つけることができます。
$ars = Yii::app()->db->createCommand("SELECT id FROM owner")->queryAll();
$ids = array();
foreach($ars as $ar) {
$ids[] = $ar['id'];
}
しかし、Yii に "$ids = Owner::model()->findIdsAsArray()" などのようなもっと怠惰な方法でこの配列を取得できる組み込みメソッドがあるかどうか疑問に思いました。