![](/img/trans.png)
[英]How to get all rows from database table using ID from field with list of IDs in Yii?
[英]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.