Yii离开了加入查询

时间:2014-04-19 04:08:44

标签: sql yii

我想使用Yii框架执行下面的sql查询,需要帮助。

SQL查询

SELECT t.*, LP.name AS lp_name FROM `user` AS `t` LEFT JOIN `level_profiles` AS `LP` ON t.prof_i = LP.id WHERE t.bld_i IN (17)

所以,我尝试了以下步骤。

$usql = 't.bld_i IN (17)';

$criteria1 = new CDbCriteria;
$criteria1->select = 't.*, LP.*';
$criteria1->join = ' LEFT JOIN `level_profiles` AS `LP` ON t.prof_i = LP.id';
$criteria1->addCondition($usql);
$criteria1->order = 't.prof_i';

$result    =    User::model()->findAll($criteria1);

上述步骤不允许我访问< level_profiles'表

然后,我试图执行:

$usql = 't.bld_i IN (17)';

$result = User::model()->with('level_profiles', array(
                'level_profiles'=>array(
                    'select'=>'name',
                    'joinType'=>'LEFT JOIN',
                    'condition'=>'level_profiles.id="prof_i"',
                ),
            ))->findAll($usql);

这会返回错误'关系" level_profiles"未在活动记录类中定义"用户"。 '

我知道这可以使用以下方法执行。

Yii::app()->db->createCommand('SELECT query')->queryAll();

但我不想使用上述内容。

我是Yii的初学者,并试图调查论坛。但是,我对如何使用" User :: model()"执行查询感到困惑。方法。

1 个答案:

答案 0 :(得分:1)

class User extends CActiveRecord
{
    ......

    public function relations()
    {
        return array(
            'level_porfile_relation'=>array(self::BELONGS_TO, 'Level_Profiles_Modelname', 'prof_i'),

        );
    }

,您的查询将是:

$result = User::model()->with('level_porfile_relation')->findAll($usql);