2016-04-15 89 views
-1

我有2個表
子查詢中yii2

  1. 項目(編號,名稱)

  2. 賬戶(ID,PROJECT_ID,ACCOUNT_NAME)

我想找到所有項目的帳戶名都是這樣的

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

請讓我知道如何在yii2中這可能。
我可以在cakephp中輕鬆完成它,我們可以使用virtualFields.is在cakephp中使用yii2中的任何功能?

回答

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

+0

嗨,我只想要一個記錄。用什麼來代替 - > all(); –

+0

用一個()mehod固定 –

0

我已經試過這

$rows = (new \yii\db\Query()) 
        ->select(['*','(SELECT account_name FROM accounts WHERE id = projects.account_id) as account_name']) 
        ->from('projects') 
        ->where(['id' => $id]) 
        ->all(); 

這是爲我工作。