yii2中的子查询

时间:2016-04-15 08:19:11

标签: yii2 subquery

我有2张桌子

  1. 项目(id,name)

  2. 帐户(id,project_id,account_name)

  3. 我想找到所有带有account_name的项目,如此

    SELECT Project.*,(SELECT account_name FROM accounts WHERE projectid = Project.id) FROM projects as Project
    

    请在yii2告诉我这是怎么回事。
    我可以在cakephp中轻松完成它,我们可以使用virtualFields.is yii2中有任何功能,如cakephp吗?

2 个答案:

答案 0 :(得分:1)

实际上,您应该能够将此作为附加列写入select()调用(带括号的列名称将自动视为DB表达式)

Project::find()
    ->select([
        'Project.*', 
        '(SELECT account_name FROM accounts WHERE projectid = Project.id) AS account_name'
    ])
    ->asArray()->all();

如果您希望将列存在于ActiveRecord类而不是数组中,请声明一个接收该字段的其他公共属性:

class Project extends ActiveRecord {
    // ...
    public $account_name;
    // ...
}

请参阅http://www.yiiframework.com/doc-2.0/yii-db-query.html#select()-detail

答案 1 :(得分:0)

我试过这个

.rmd

这对我有用。