代理:
agent_id (primary key)
用户:
f_id (foreign key)
type
我已经以这种方式建立的关系
public function relations() {
return array(
'user' => array(self::HAS_ONE, 'Users', 'f_id'),
);
}
但我想添加更多的条件,像加入只有type=3
在用户表。
谢谢。
代理:
agent_id (primary key)
用户:
f_id (foreign key)
type
我已经以这种方式建立的关系
public function relations() {
return array(
'user' => array(self::HAS_ONE, 'Users', 'f_id'),
);
}
但我想添加更多的条件,像加入只有type=3
在用户表。
谢谢。
加上你们的关系的条件
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
有没有像“属性‘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/
你应该创建一个函数来获取用户,而使用这将使用更多的查询即使你不使用这种关系延迟加载。
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)
));
}