我是Yii2的新用户,我想知道如何在ActiveRecord中访问关系表的值
对于Instance我们有这两个模型:
供应商有很多产品
产品有一个供应商
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 :(得分:1)
如果您想访问联接数据,请使用asArray():
Product::find()->joinWith("supplier")->asArray()->all();
答案 1 :(得分:0)
如果您想通过joinWith访问供应商数据,请使用以下
$product=Product::find()->joinWith('supplier')->all();
如果要访问供应商数据,它将返回数组,然后使用以下
$product[0]->supplier
它将返回供应商模态,您现在可以访问任何属性,如
$product[0]->supplier->name