2014-11-29 2 views
0

У меня есть три таблицы:Laravel возвращение собственности из третьей таблицы

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

Проблема заключается в том, что вы не выполняете запрос при выполнении types(), и поэтому вы вызываете category() на экземпляр конструктора запроса, а не на модель ProductTypes.

Вы можете использовать динамические свойства для получения результата .

$productData->types->category->category 

рассмотреть также переименовывать ваши отношения. В настоящее время у вас есть «типы», например, но он возвращает только один тип, потому что его отношение «один ко многим». «тип» имел бы смысл.

Смежные вопросы