【发布时间】:2017-01-08 05:25:53
【问题描述】:
我是 Yii2 的新手,我想知道如何在 ActiveRecord 中访问关系表的值
例如,我们有这 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);
此代码正确地为我提供了产品表的数据,但我无法访问供应商数据值,为什么?如何访问连接表的值?
【问题讨论】:
-
$product->supplier相关数据。 -
@ineersa 试过了,供应商是私有的
-
当然它是私有的,也是数组中的。当您编写
$product->supplier并且此属性不存在时,基本模型的__get()方法将调用getSupplier()方法。这就是 Yii 中这些东西(某种吸气剂)的工作原理。 -
@ineersa 我试过你告诉 $product->supplier 这是我收到的错误:尝试获取非对象的属性
-
find()->asArray()->all()将返回数组中的记录。
标签: php mysql activerecord yii2