在Yii中编写查询[duplicate]

sxpgvts3  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(147)

此问题在此处已有答案

How to write the query in yii,using findAll()(3个答案)
八年前就关门了。
我有下面的查询...并希望在现有的查询中添加一些联合额外的联合语句...发布平面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 */

我已经试过了下面的方法,到现在为止都还不错,但是我不知道怎么加联合声明。

$results = SearchEmployee::model()->findAll("category_id=:category AND key_skills like :skill AND experience=:experience", array(
        'category'=>$category,
        'skill'=>'%'.$skills.'%',
        'experience'=>$experience
        ));

我只想保留上面的语句,只需要在语句中添加上面提到的联合查询,并且我不想使用adbCriteria作为时间起点。

vhipe2zx

vhipe2zx1#

问得好。您可以通过以下方式使用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();
nbnkbykc

nbnkbykc2#

我想你可以用relations来做这个
job_profile表(我不知道您在哪个模型中使用它)需要与usercategory有2个关系
然后,它会自动为您创建连接,您只需要在模型本身上进行搜索。
否则,如果你想做一个复杂的Select语句,尽管这不太像MVC,你可以使用query builder
或者简单地这样尝试:
$result = Yii::app()->db->createCommand('YOUR SELECT STATEMENT')->queryAll();

相关问题