代理:
agent_id (primary key)
用户:
f_id (foreign key)
type
我以这种方式创建了关系
public function relations() {
return array(
'user' => array(self::HAS_ONE, 'Users', 'f_id'),
);
}
但我想在User表中添加 type=3
时添加更多条件,例如加入。
感谢。
答案 0 :(得分:8)
在您的关系中添加条件
public function relations() {
return array(
'user' => array(self::HAS_ONE, 'Users', 'f_id', array(
'condition' => 'user.type = :type',
'params' => array(':type'=>3)
)),
);
}
http://www.yiiframework.com/doc/guide/1.1/en/database.arr#relational-query-options
答案 1 :(得分:6)
没有像'属性'这样的错误CHasOneRelation.0“未定义'如果你使用它:
public function relations()
{
return array(
'user' => array(
self::HAS_ONE,
'Users',
'f_id',
'on' => 'user.ref_type = :type',
'params' => array(':type' => 3))
);
}
请参阅此链接:http://www.yiiframework.com/forum/index.php/topic/10185-using-relations-and-conditions/
答案 2 :(得分:0)
您应该创建一个函数来让用户使用延迟加载,即使您不使用此关系也会使用更多查询。
public function getUser(){
return Users::model()->find(array(
'condition'=>'type = :type',
'params' => array(':type'=>3)
));
}
通过使用它,您可以使用缓存功能来缓存关系不支持的查询。
public function getUser(){
return Users::model()->cache(1000)->find(array(
'condition'=>'type = :type',
'params' => array(':type'=>3)
));
}