Laravel雄辩,有很多在多桌

时间:2016-11-15 05:45:21

标签: laravel eloquent laravel-5.3 relation multi-table

我有三个表库存,产品,product_category

表格中的

广告资源

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

这里product_name是外键..这个表与产品表有很多关系

表中的

产品

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

这里type_fk_id是外键..这个表与 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 eloquent关系访问或获取此数据 我知道如何在模型中使用 hasmanyThrough 来访问product_category->product->inventory ...我如何使用反向的hasmanythrough ,这意味着inventory->product->product_category

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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();