繁体   English   中英

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

[英]Yii : how to get an array of ids from a table

假设我有一个包含2个表的模型:Owner(int:id)和Car(int:id,int:owner_id)。

我正在尝试在Car上构建验证规则,以避免将不存在的owner_id绑定到Car.owner_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为CExistValidator提供别名,该别名exist以用于外键检查。 如果所有者ID不连续,即如果我们删除中间用户,则range验证器可能会失败。 因此,您可以使用以下验证规则

array('owner_id', 'exist', 'attributeName'=>'id', 'className'=>'Owner'),

上面的代码验证模型Owner中是否存在owner_id ,如果数据库中不存在该错误,则会引发错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM