我有三张桌子:
products
product_types
product_categories
products
属于product_types
,product_types
属于product_categories
。
如何从product_categories
开始products
访问列?:
ProductTypes型号:
class ProductTypes extends Eloquent {
public function category() {
return $this->belongsTo('ProductCategories');
}
}
产品型号:
class Product extends Eloquent {
protected $table = 'products';
public function brands() {
return $this->belongsTo('ProductBrands', 'brand_id', 'id');
}
public function ages() {
return $this->belongsTo('ProductAges', 'age_id', 'id');
}
public function types() {
return $this->belongsTo('ProductTypes', 'type_id', 'id');
}
public function images() {
return $this->hasMany('ProductImages');
}
public function reviews() {
return $this->hasMany('ProductReviews');
}
public function toArray() {
$ar = $this->attributes;
$ar['brand'] = $this->brand;
$ar['age'] = $this->age;
$ar['type'] = $this->type;
return $ar;
}
public function getBrandAttribute() {
$brands = $this->brands()->first();
return (isset($brands->brand) ? $brands->brand : '');
}
public function getAgeAttribute() {
$ages = $this->ages()->first();
return (isset($ages->age) ? $ages->age : '');
}
public function getTypeAttribute() {
$types = $this->types()->first();
return (isset($types->type) ? $types->type : '');
}
}
我试过了:
$productData->types()->category()->category
但是这给出了一个错误,说该方法不存在。
对标题感到抱歉,无法想到一个。
答案 0 :(得分:0)
问题是,您在执行types()
时没有执行查询,因此您在查询构建器实例上调用category()
而不是ProductTypes
模型。
您可以使用动态属性访问关系的结果。
$productData->types->category->category
还考虑重命名您的人际关系。目前你有"类型"例如,但它只返回一种类型,因为它是一对多的关系。 "类型"会更有意义。