2016-08-21 5 views
1

У меня есть эта таблица,hasManyThrough не работает

categories: id | name | slug 
Products: id | name | slug | category_id | brand_id 
Brands: id | name | slug | 

Проблема возникает, когда я пытаюсь принести Бренды здесь в категории функции.

Категория Модель

public function brands() 
{ 
    return $this->hasManyThrough('App\Brand', 'App\Product' 'brand_id', 'id'); 
} 

Бренд либо не отображается или отображается в неправильной категории.

Есть ли какой-либо другой способ получить доступ к продуктам Brands?

ответ

0

изменить ваши отношения, как показано ниже:

public function brands() 
{ 
    return $this->hasManyThrough('App\Brand', 'App\Product' 'category_id','id','brand_id'); 
} 

Но я сомневаюсь, что вы можете использовать hasManyThrough(), чтобы получить это соотношение.
Как указано на laravel site, ваша таблица должна иметь следующее отношение.

Category 1- * Product 1- * Brand
Что не возможно в вашем случае.

Я думаю, что вы должны сделать это вручную, используя что-то вроде ниже:

public function Brands($category_id){ 
    $products = Category::find($category_id)->Products()->get()->pluck('brand_id'); 
    $brands = Brands::whereIn('id','=',$products)->get(); 
    return $brands; 
} 
0

Это belongsToManyRelation

Категория Модель

public function brands() 
    { 
     return $this->belongsToMany('App\Brands', 'products', 'category_id', 'brand_id'); 
    } 
Смежные вопросы