2016-11-15 49 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 

定義像下面的模型關係:

應用程序\庫存

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

應用程序\產品

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

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

應用\產品分類

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

Docs

+0

得到這個錯誤使用RelationNotFoundException.php線20烏爾代碼=== RelationNotFoundException後: 電話未定義關係[產物]上模型[ App \ Inventory] ​​.-一個事情如何庫存知道它的外鍵是product_name ????? – Borna

+0

您需要創建關係內部庫存模型? –

+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();