我想使用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()"执行查询感到困惑。方法。
答案 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);