【问题标题】:Writing query in Yii [duplicate]在 Yii 中编写查询 [重复]
【发布时间】:2014-06-06 08:14:47
【问题描述】:

我有以下查询...并想在现有查询中添加一些联合附加联合语句...发布平面 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中尝试了folwing。到目前为止它工作正常......但我不知道如何添加联合声明。

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

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

【问题讨论】:

标签: php sql yii


【解决方案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();

【讨论】:

    【解决方案2】:

    我想你可以用relations 来做这个

    job_profile 表(我不知道您在哪个模型中使用它)需要与 usercategory 有 2 个关系

    然后它会自动为您进行连接,您只需搜索模型本身。

    否则,如果你想做一个复杂的Select语句,虽然这不像MVC,你可以使用query builder

    或者简单地尝试一下:

    $result = Yii::app()->db->createCommand('YOUR SELECT STATEMENT')->queryAll();

    【讨论】:

    • asped...它在这样做时只检索一个结果...查询有什么问题。
    • 你得到一个结果的数组吗?还是只是 1 个对象?
    • Asped...我得到一个结果的数组。
    • 所以这只是意味着您的选择中有错误,或者只是在您的数据库中只有 1 个结果
    • ok Asped...我刚刚更正了我的查询...如果您可以抽出一些时间,可以在这里加入我的聊天...chat.stackoverflow.com/rooms/50940/yii-framework
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多