2016-11-15 9 views
0

У меня есть три таблицы инвентаризации, продукты, PRODUCT_CATEGORYLaravel красноречиво, имеет много в многоканальной таблице

в таблице: инвентаризация

id product_name quantity 
1  2    24 
2  2    54653 
3  1    34 

здесь product_name чуждо таблица key..this имеет много отношения с продукт стол

в таблице: продукты

id name  type_fk_id 
1 pc    1 
2 laptop   2 
3 servo_oil  2 

здесь type_fk_id чуждо таблица key..this имеет много отношения с PRODUCT_CATEGORY таблицы

в таблице: PRODUCT_CATEGORY

id type_name  
1 PC    
2 oil   
3 servo_oil 

нет внешнего ключа в таблице PRODUCT_CATEGORY

в моем контроллере

$data=Inventory::all(); 
return view('inv_view',compact('data')); 

ввиду inv_view

@foreach($data as $inv) 
{{$inv->id}} 
{{$inv->qty}} 

@endforeach 

я хочу показать в части представления также название продукта и категории то будет означать

id quantity product_name category 
1 34   pc   pc 
2 436   servo_oil  oil 

я не знаю, как получить доступ или получить эти данные в просмотр с использованием laravel красноречивого отношения Я знаю, как использовать hasmanyThrough в модели для доступа product_category->product->inventory ...Как я могу использовать обратное hasmanythrough то будет означать inventory->product->product_category

ответ

2

Попробуйте это:

$data=Inventory::with('product.product_category')->get(); 
return view('inv_view',compact('data')); 

Внутренний вид

@foreach($data as $inv) 
    {{ $inv->id }} 
    {{ $inv->qty }} 
    {{ $inv->product->name }} 
    {{ $inv->product->product_category->type_name }} 
@endforeach 

Определение вашей модели отношение, как показано ниже:

App \ Inventory

public function product() { 
    return $this->belongsTo('App\Product', 'product_name'); 
} 

App \ Product

public function inventory(){ 
    return $this->hasMany('App\Inventory'); 
} 

public function product_category() { 
    return $this->belongsTo('App\ProductCategory', 'type_fk_id'); 
} 

App \ ProductCategory

public function product() { 
    return $this->hasMany('App\Product'); 
} 

Docs

+0

получает эту ошибку после того, как с помощью ур коды === RelationNotFoundException в RelationNotFoundException.php строке 20: Вызова неопределенного отношения [продукт] на модели [ App \ Inventory]. - Одна вещь, как инвентарь будет знать, что его внешний ключ - product_name ????? – Borna

+0

Вам нужно создать отношение внутри модели Inventory? –

+0

Можете ли вы любезно предоставить, каково будет отношение внутри инвентаря ??? делать то, что имеет смысл? – Borna

0

Попробуйте сделать так

Присоединитесь к столу внешнего ключа

$products = DB::table('products') 
    ->join('inventory', 'products.id', '=', 'inventory.product_id') 
    ->join('product_category', 'products.id', '=', 'product_category.product_id') 
    ->select('products.*','product_category.category as category_name') 
    ->get();