Laravel eloquent ,有多个 table
Laravel eloquent ,has many in multi table
我有三个 tables inventory,products,product_category
在 table:库存
id product_name quantity
1 2 24
2 2 54653
3 1 34
这里product_name是外键..这个table和product有很多关系table
在table中:产品
id name type_fk_id
1 pc 1
2 laptop 2
3 servo_oil 2
这里type_fk_id是外键..这个table和product_category有很多关系table
在table:product_category
id type_name
1 PC
2 oil
3 servo_oil
product_categorytable
中没有外键
在我的控制器中
$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
尝试这样做
用外键加入你的table
$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();
试试这个:
$data=Inventory::with('product.product_category')->get();
return view('inv_view',compact('data'));
Inside View
@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');
}
我有三个 tables inventory,products,product_category
在 table:库存
id product_name quantity
1 2 24
2 2 54653
3 1 34
这里product_name是外键..这个table和product有很多关系table
在table中:产品
id name type_fk_id
1 pc 1
2 laptop 2
3 servo_oil 2
这里type_fk_id是外键..这个table和product_category有很多关系table
在table:product_category
id type_name
1 PC
2 oil
3 servo_oil
product_categorytable
中没有外键在我的控制器中
$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
尝试这样做
用外键加入你的table
$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();
试试这个:
$data=Inventory::with('product.product_category')->get();
return view('inv_view',compact('data'));
Inside View
@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');
}