2015-05-17 86 views
1

我需要Yii 2.x框架的一些幫助。Yii框架 - 將字段從不同表格存儲到模型中

我有2個表格,stufftable,每個都有自己的型號,StuffTable

stufftable共享密鑰。 stuff包含table_id鏈接到idtable

stuff控制器包含以下代碼從stuff檢索所有字段和age場從table

$model = Stuff::find() 
       ->select (['`stuff`.*', '`table`.`age`']) 
       ->leftJoin ('table', '`stuff`.`table_id`=`table`.`id`', []) 
       ->where (['table_id' => $id]) 
       ->one() 

一旦執行,$model包含一切從stuff表,但不包含age場,即使生成的SQL確實檢索它。我發現將public $age;添加到Stuff模型中確實存儲了age字段,但是這看起來像是黑客並且感覺很髒。

所以我的問題是,是否有可能得到$model變量來存儲引用表中的字段而不更改原始模型?如果這是不可能的,是否有比我已經做的更正確的做事方式?

謝謝!

回答

1

在這樣

public function getTable() 
{ 
    return $this->hasOne(Table::className(), ['id' => 'table_id']); 
} 

東西模型定義關係,那麼你就可以像

$model->table->age 
+0

這正是我所需要的。謝謝Mohan! – Simon

1

您可以訪問相關模型領域的面向對象的方式,這樣的事情:

$model->table->age 

在上面的表達式,tableStuff模型關係名。

+0

你的代碼工作通過引用的對象訪問,哈米德,然而由於莫漢指出上面,你需要函數getTable()首先定義。 – Simon