如何在laravel中获取嵌套关系的数据
Posted
技术标签:
【中文标题】如何在laravel中获取嵌套关系的数据【英文标题】:How to get data of nested Relation in laravel 【发布时间】:2020-11-18 08:06:58 【问题描述】:让我解释一下实际情况。我有三个表,例如:
产品表
商店表:
用户表:
这里product
表的shop_id
是shop
表的外键。同样,shop 表的 shop_owner_id
是 users 表的外键。现在我有product_id
,我想得到shop_owner_id
。我可以这样做:
STEP 1. get `shop_id` from `product_id`
STEP 2. get `shop_owner_id` from `shop_id`
或者我可以编写一个原始 sql 查询来加入这些表并从product_id
获取shop_owner_id
。但是在laravel中有没有下降的方式。
【问题讨论】:
您是否在 Eloquent 模型中设置了关系,即product
-belongsTo-> shop
和 shop
-belongsTo-> user
(所有者)?
谢谢一百万。我想知道我有多愚蠢!只是这种关系设置解决了我的问题。
【参考方案1】:
我可以扣除那个
用户拥有商店,商店属于用户 商店有很多产品,产品属于一个商店要定义关系,可以像这样在每个模型内部执行
class Shop extends Model
public function products()
return this->hasMany('App\Models\Product', 'shop_id');
public function user()
return this->belongsTo('App\Models\Product', 'shop_owner_id');
class Product extends Model
public function shop()
return this->belongsTo('App\Models\Shop', 'shop_id');
class User extends Model
public function shop()
return this->hasMany('App\Models\Shop', 'shop_owner_id');
// or if user can have a single shop
return this->hasOne('App\Models\Shop', 'shop_owner_id');
【讨论】:
以上是关于如何在laravel中获取嵌套关系的数据的主要内容,如果未能解决你的问题,请参考以下文章