Table AgentType:
agent_type_id
agent_type_name
Table Agent:
agent_id
agent_name
Table Talent:
talent_id
talent_name
Table TalentAgent:
talent_id
agent_id
agent_type_id
Table AgentType
agent_id
agent_type_id
人才模式关系:
public function relations() {
return array(
'talent_agent' => array(self::HAS_MANY, 'TalentAgent', 'talent_id'),
'agent' => array(self::HAS_MANY, 'Agent', 'agent_id', 'through' => 'talent_agent'),
'agents' => array(self::MANY_MANY, 'Agent', 'nca_talent_agent(talent_id,agent_id)'),
);
}
代理模型关系:
public function relations()
{
return array(
'talent_agent' => array(self::HAS_MANY, 'TalentAgent', 'agent_id'),
'talent' => array(self::HAS_MANY, 'Talent', 'talent_id', 'through' => 'talent_agent'),
'agent_type' => array(self::MANY_MANY, 'AgentType', 'nca_agent_agent_type(agent_id,agent_type_id)'),
);
}
AgentType关系:
public function relations()
{
return array(
'talent' => array(self::MANY_MANY, 'Talent', 'nca_talent_agent(talent_id,agent_id,agent_type_id)'),
'agent' => array(self::MANY_MANY, 'Agent', 'nca_agent_agent_type(agent_id,agent_type_id)'),
);
}
TalentAgent Relations:
public function relations()
{
return array(
'talent' => array(self::BELONGS_TO, 'Talent', 'talent_id'),
'agent' => array(self::BELONGS_TO, 'Agent', 'agent_id'),
'agent_type' => array(self::BELONGS_TO, 'AgentType', 'agent_type_id'),
);
}
在我的网格视图中,我为每个人才列出了3种不同的代理类型:
array(
'name'=>'agent_primary',
'value'=>'$data->getPrimaryAgent($data->talent_id, false)',
'filter'=>CHtml::activeDropDownList($model, 'agent_primary', CHtml::listData(Agent::model()->with('agent_type')->findAll(array('condition'=>'agent_type.agent_type_id = 1')),'agent_id', 'name')),
),
array(
'name'=>'agent_voice',
'value'=>'$data->getVoiceAgent($data->talent_id, false)',
'filter'=>CHtml::activeDropDownList($model, 'agent_voice', CHtml::listData(Agent::model()->with('agent_type')->findAll(array('condition'=>'agent_type.agent_type_id = 2')),'agent_id', 'name')),
),
array(
'name'=>'agent_commercial',
'value'=>'$data->getCommercialAgent($data->talent_id, false)',
'filter'=>CHtml::activeDropDownList($model, 'agent_commercial', CHtml::listData(Agent::model()->with('agent_type')->findAll(array('condition'=>'agent_type.agent_type_id = 3')),'agent_id', 'name')),
),
在我的网格视图搜索过滤器中,我试图能够独立地按每种不同的代理类型进行过滤,但我不知道在哪里添加代理类型过滤器,这是我到目前为止所拥有的:
$criteria=new CDbCriteria;
$criteria->with = array('agent');
$criteria->together = true;
$criteria->compare('agent.agent_id',$this->agent_primary);
如何按agent_type_id过滤?谢谢!
答案 0 :(得分:0)
希望帮助其他人遇到这个问题,这就是我最终所做的事情:
标准:
$criteria=new CDbCriteria;
$criteria->with = array('agent','agent.agent_type');
$criteria->together = true;
然后你可以应用你的比较标准(是的,我现在硬编码了type_id):
$criteria->compare("agent_type.agent_type_id",array(3));
$criteria->compare('agent.agent_id', $this->primary_agent_id);