我尝试生成此查询。
select * from jobs j inner join vacancies v on j.id = v.job_id where v.id = 2943 order by j.created_at desc limit 1
v.id
只是为了测试查询是否正常工作。
我有一些条件来自空缺表需要使用作业表生成它。
我尝试的不只是生成它。
这是Vacancies模型的关系
'job' => array(self::BELONGS_TO, 'Jobs', 'job_id'),
这是乔布斯模型的关系
'vacancies' => array(self::HAS_MANY, 'Vacancies', 'job_id'),
和我的查询。
$newJobs = Jobs::model()->findAll(
array('with'=>array(
'vacancies'=>array(
'condition'=>'vacancies.id = 2943',
'order'=>'t.created_at desc',
)
),
'order'=>'t.created_at desc'
,'limit'=>1
)
);
但这给了我最新的工作,没有空缺的任何条件作为id。
并尝试使用Jobs模型中的一些范围。
$newJobs = Jobs::model()->isOffline()->isApproved()->recent()->findAll(array(
'with'=>array(
'vacancies'=>array(
'condition'=>'vacancies.id=2268'
)
)
)
);
范围
public function recent($limit=1)
{
$this->getDbCriteria()->mergeWith(array(
'order'=>'t.created_at DESC',
'limit'=>$limit,
));
return $this;
}
public function isOffline($offline = 'False')
{
$this->getDbCriteria()->mergeWith(array(
'condition'=>"t.offline = '$offline' OR t.offline is null",
));
return $this;
}
public function isApproved($approved = 'False')
{
$this->getDbCriteria()->mergeWith(array(
'condition'=>"t.approved= '$approved'",
));
return $this;
}
在没有空缺条件的情况下,没有工作仍然可以给我最新的工作。
任何人都可以帮助我。
答案 0 :(得分:1)
试试这个:
...
array('with'=>array(
'vacancies'=>array(
'alias'=>'v',
'joinType'=>'INNER JOIN',
'condition'=>'v.id = 2943',
'order'=>'t.created_at desc',
)
),
...