【发布时间】:2014-04-19 04:08:43
【问题描述】:
我想使用 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);
这将返回错误“活动记录类“用户”中未定义关系“级别配置文件”。 '
我知道这可以使用以下方法执行。
Yii::app()->db->createCommand('SELECT query')->queryAll();
但我不想使用上面的。
我是 Yii 的初学者,并试图查看论坛。但是,我对如何使用“User::model()”方法执行查询感到困惑。
【问题讨论】:
-
你在你的用户模型中声明了关系吗?
-
对不起,我不知道如何声明关系。您能提供一些详细信息吗?