2016-02-02 86 views
0

我是新來Yii2我想知道如何訪問ActiveRecord的關係表中的值Yii2訪問連接表列

比如我們有這2種型號:

供應商有很多產品

產品都有一個供應商

class Supplier extends ActiveRecord{ 

     public function getProducts(){ 
      return $this->hasMany(Product::className(),["supplier_id"=>"id"]); 
     } 
     public static function tableName(){ 
      return 'supplier'; 
     } 
    } 

class Product extends ActiveRecord 
{ 
    public function getSupplier(){ 
     return $this->hasOne(Supplier::className(),['id'=>'supplier_id']); 
    } 
    public static function tableName() 
    { 
     return 'product'; 
    } 
} 

要訪問我使用這行代碼

的產品數據
$product=Product::find()->joinWith('supplier')->all(); 
var_dump($product); 

此代碼正確地給出了產品表的數據,但我無法訪問供應商數據值,爲什麼?如何訪問連接表的值?

+0

'$ product-> supplier'的相關數據。 – ineersa

+0

@ineersa試過它供應商是私人的 –

+0

Ofcourse它是私人的,也在陣列。當你寫'$ product-> supplier'並且這個屬性不存在時'__get()'方法將調用'getSupplier()'方法。 Yii就是這樣的(吸氣者)。 – ineersa

回答

1

如果您想訪問連接數據,然後使用asArray()

Product::find()->joinWith("supplier")->asArray()->all(); 
0

如果您要訪問通過joinWith供應商數據使用以下

$product=Product::find()->joinWith('supplier')->all(); 

,如果你想它會返回數組訪問供應商數據,然後使用以下內容

$product[0]->supplier 

它將返回t他可以訪問任何屬性,如

$product[0]->supplier->name