如何在laravel中获取嵌套关系的数据

Posted

技术标签:

【中文标题】如何在laravel中获取嵌套关系的数据【英文标题】:How to get data of nested Relation in laravel 【发布时间】:2020-11-18 08:06:58 【问题描述】:

让我解释一下实际情况。我有三个表,例如:

    产品表

    商店表:

    用户表:

这里product表的shop_idshop表的外键。同样,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-> shopshop -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中获取嵌套关系的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在laravel中获取嵌套关系模型[重复]

如何从 Laravel 上的预加载中获取嵌套数据?

如何从 Laravel 8 Eloquent 中的嵌套关​​系中获取数据?

如何在 Laravel 中获取嵌套的键值

如何使用关系在laravel中的数据库中插入嵌套的二维数组

如何在 Laravel 的嵌套 2 级关系中按列排序?