在 laravel 5.4 中生成模型关系
Generate Model relationship in laravel 5.4
我有 3 个 table & 型号:
1) product
-----------
id, name, c_id, sku
2) category
----------
id, name, parent_c_id
3) parent_category
-----------------
id, name
如何使用 eloquent 关系获取包含类别和父类别的产品详细信息?
Eloquent 让您在模型 类 中定义 models/tables 之间的关系。要定义一个模型有外键,你可以使用belongsTo
来定义你的模型属于另一个模型。
// Product.php
public function category()
{
return $this->belongsTo('App\Category');
}
// Category.php
public function category()
{
return $this->belongsTo('App\ParentCategory');
}
Eloquent 将在数据库 table 中查找名为 <lowercase modelname>_id
的列。对于 Product
这将意味着 category_id
,因为 Product
属于 Category
.
如果不想更改列名,可以将外键定义为第二个参数:
return $this->belongsTo('App\Category', 'c_id');
您可以在 Laravel Docs
中阅读这些关系
更新#1
看来我对你的问题有点误解,所以根据你的评论,我认为这应该可行:
Product::with('category')
->with('category.parent_category')
->get();
我有 3 个 table & 型号:
1) product
-----------
id, name, c_id, sku
2) category
----------
id, name, parent_c_id
3) parent_category
-----------------
id, name
如何使用 eloquent 关系获取包含类别和父类别的产品详细信息?
Eloquent 让您在模型 类 中定义 models/tables 之间的关系。要定义一个模型有外键,你可以使用belongsTo
来定义你的模型属于另一个模型。
// Product.php
public function category()
{
return $this->belongsTo('App\Category');
}
// Category.php
public function category()
{
return $this->belongsTo('App\ParentCategory');
}
Eloquent 将在数据库 table 中查找名为 <lowercase modelname>_id
的列。对于 Product
这将意味着 category_id
,因为 Product
属于 Category
.
如果不想更改列名,可以将外键定义为第二个参数:
return $this->belongsTo('App\Category', 'c_id');
您可以在 Laravel Docs
中阅读这些关系更新#1
看来我对你的问题有点误解,所以根据你的评论,我认为这应该可行:
Product::with('category')
->with('category.parent_category')
->get();