Php Yii:如何从表中获取ID数组

Php Yii:如何从表中获取ID数组,php,validation,activerecord,yii,Php,Validation,Activerecord,Yii,假设我有一个模型,有两个表:Owner(int:id)和Car(int:id,int:Owner\u id) 我试图在Car上建立一个验证规则,以避免将不存在的owner\u id绑定到Car.owner\u id字段。我希望在代码中包含此验证规则,而不是仅使用DB外键检查,因为它允许我在表单上轻松显示错误消息,而不是在以后处理DB异常时 因此,在我的模型中,我希望有如下内容: public function rules() { return array( array('

假设我有一个模型,有两个表:Owner(int:id)和Car(int:id,int:Owner\u id)

我试图在Car上建立一个验证规则,以避免将不存在的owner\u id绑定到Car.owner\u id字段。我希望在代码中包含此验证规则,而不是仅使用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()”或类似的方式。

您不想验证范围。Yii提供的别名
exist
正好用于外键检查。如果所有者ID不连续,即如果我们删除中间用户,
范围
验证程序可能会失败。因此,您可以使用如下验证规则

array('owner_id', 'exist', 'attributeName'=>'id', 'className'=>'Owner'),
上述代码验证模型
owner
中是否存在
owner\u id
,如果数据库中不存在,则会引发错误