我有2张桌子
项目(id,name)
帐户(id,project_id,account_name)
我想找到所有带有account_name的项目,如此
SELECT Project.*,(SELECT account_name FROM accounts WHERE projectid = Project.id) FROM projects as Project
请在yii2告诉我这是怎么回事。
我可以在cakephp中轻松完成它,我们可以使用virtualFields.is yii2中有任何功能,如cakephp吗?
答案 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
这对我有用。