【问题标题】:Yii left join queryYii 左连接查询
【发布时间】: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()”方法执行查询感到困惑。

【问题讨论】:

  • 你在你的用户模型中声明了关系吗?
  • 对不起,我不知道如何声明关系。您能提供一些详细信息吗?

标签: sql yii


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2017-06-30
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多