我有以下查询...并希望在现有查询中添加一些联合附加联合语句...发布平面sql查询,以便它让你知道我实际上在寻找什么。
/* simple sql query */
SELECT *
FROM job_profile
INNER JOIN user ON user.id = job_profile.user_id
INNER JOIN category ON category.id = job_profile.category_id
WHERE category_id =1
AND experience =2
AND key_skills LIKE '%php%'
LIMIT 0 , 30
/* simple sql query */
我已经尝试了yii中的以下内容。它的工作到现在为止......但我不知道如何添加联合声明。
$results = SearchEmployee::model()->findAll("category_id=:category AND key_skills like :skill AND experience=:experience", array(
'category'=>$category,
'skill'=>'%'.$skills.'%',
'experience'=>$experience
));
我只想保留上述声明,只需要在声明中添加上面提到的联合查询。我不想使用adbCriteria进行时间设计。
答案 0 :(得分:1)
好问题。您可以通过以下方式使用With()
Parent::model()->with(array(
'childs',
'childs.grandchilds' => array(
'select' => false,
'condition' => 'grandchilds.gender = "MALE"',
),
)->findAll(...);
更多例如:
$users=User::model()->with(array(
'posts'=>array(
// we don't want to select posts
'select'=>false,
// but want to get only users with published posts
'joinType'=>'INNER JOIN',
'condition'=>'posts.published=1',
),
))->findAll();
答案 1 :(得分:1)
我认为您可以使用relations
执行此操作 job_profile
表(我不知道您使用哪个模型)需要与user
和category
然后它将自动为您进行连接,您只需要搜索模型本身。
否则,如果你想做一个复杂的Select语句,虽然这不是很多MVC,你可以使用query builder
或以这种方式尝试:
$result = Yii::app()->db->createCommand('YOUR SELECT STATEMENT')->queryAll();