Laravel 5筛选具有关系的主要数据

肯尼·翁(Kenny Ong)
User : id,name,age
Shop : id,user_id,name
Address : id, shop_id, address
Shop Type : id, shop_id, type

[用户]具有多个[商店],并且[商店]具有多个分支,因此它具有多个[地址],并且[商店]也具有多个[类型],例如酒精,食物,小吃,饮料等。

现在,我要获取具有所有地址和商店类型的用户商店。以下是我的模型:

用户模型

public function shop(){
     return $this->hasMany('App\Shop');
}

商店类

public function address(){
     return $this->hasMany('App\Address');
}

public function type(){
     return $this->hasMany('App\ShopType');
}

地址类别

public function state(){
         return $this->hasMany('App\State');
    }

    public function city(){
         return $this->hasMany('App\City');
    }

    public function country(){
         return $this->hasMany('App\Country');
    }

我的控制

public function shop($id)
    {
            $shop = User::where("id",$id)->with('shop.address','shop.type')->first();
    if($shop){
            return response()->json(
                [
                    'shop' => $shop->shop,
                ],
                200,
                array(),
                JSON_PRETTY_PRINT
            );
    }else{
            return false;
    }

上面的代码可以在数据库中获取所有商店的地址和商店的类型,但是我如何只过滤商店的类型= “ food”“ drink”,而国家/地区代码则由我们编程?我尝试下面的代码,但不适用于我:

$type = {'food','drink'};  // Example
$user = {'1'};  // Example

public function shopWithFilter($id,$type,$country)
        {
                $shop = User::where("id",$id)->with('shop.address','shop.type')->where(['shop.type.name'=>$type,'shop.address.country.code',$country])->first();
        if($shop){
                return response()->json(
                    [
                        'shop' => $shop->shop,
                    ],
                    200,
                    array(),
                    JSON_PRETTY_PRINT
                );
        }else{
                return false;
        }

谢谢

肯尼·翁(Kenny Ong)

问题解决了,下面是我的答案:

public function shopWithFilter($id,$type,$country)
{
    $shop = User::where("id",$id)->with('shop.address','shop.type')
    ->whereHas('shop.address' function($q) use($country){
        $q->where('name',$country);
    })
    ->whereHas('shop.type' function($q) use($type){
        $q->where('name',$type);
    })
    ->first();
    if($shop){
        return response()->json(
            [
                'shop' => $shop->shop,
            ],
            200,
            array(),
            JSON_PRETTY_PRINT
        );
    }else{
        return response()->json(
            [
                'shop' => null,
            ],
            200,
            array(),
            JSON_PRETTY_PRINT
        );
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在视图laravel中传递具有关系的数据

来自分类Dev

在Laravel中检索具有关系的数据

来自分类Dev

Laravel 5获得具有关系和多重关系的用户

来自分类Dev

错误试图在Laravel 5中获取具有关系和范围的非对象的属性

来自分类Dev

Laravel 5:尝试获取具有关系的非对象错误的属性

来自分类Dev

Laravel 5.1-查看具有关系的数据过滤器

来自分类Dev

如何在Laravel中获取具有关系的数据以尝试查看Bill Products

来自分类Dev

Laravel 5.1-查看具有关系的数据过滤器

来自分类Dev

Laravel获得所有具有关系的模型

来自分类常见问题

Laravel。在具有关系的模型中使用scope()

来自分类Dev

Laravel,数据表,带有关系计数的列

来自分类Dev

返回laravel中的所有关系数据

来自分类Dev

如何在laravel 5.2中克隆具有所有关系的雄辩的对象

来自分类Dev

如何在laravel 5.2中克隆具有所有关系的雄辩的对象

来自分类Dev

Laravel-具有所有关系的dd()模型

来自分类Dev

Laravel雄辩的所有关系

来自分类Dev

Laravel Multiple有关系的标准

来自分类Dev

Laravel Eloquent - 是否有关系?

来自分类Dev

Laravel + Vue 返回具有多个关系的数据

来自分类Dev

具有多个关系的laravel数据库查询

来自分类Dev

在Laravel-4中具有关系的批处理插入对象

来自分类Dev

Laravel雄辩地将变量传递给具有关系函数

来自分类Dev

Laravel:创建具有关系的记录时,无法将外键插入表

来自分类Dev

如何使用具有关系Laravel的模型获得单个元素

来自分类Dev

Laravel 5.1:尝试在具有关系的foreach循环中获取非对象的属性

来自分类Dev

Laravel:三个有关系的表来获取数据

来自分类Dev

具有大量关系的Laravel查询

来自分类Dev

Laravel Eloquent具有很多关系

来自分类Dev

Laravel Eloquent具有很多关系

Related 相关文章

  1. 1

    在视图laravel中传递具有关系的数据

  2. 2

    在Laravel中检索具有关系的数据

  3. 3

    Laravel 5获得具有关系和多重关系的用户

  4. 4

    错误试图在Laravel 5中获取具有关系和范围的非对象的属性

  5. 5

    Laravel 5:尝试获取具有关系的非对象错误的属性

  6. 6

    Laravel 5.1-查看具有关系的数据过滤器

  7. 7

    如何在Laravel中获取具有关系的数据以尝试查看Bill Products

  8. 8

    Laravel 5.1-查看具有关系的数据过滤器

  9. 9

    Laravel获得所有具有关系的模型

  10. 10

    Laravel。在具有关系的模型中使用scope()

  11. 11

    Laravel,数据表,带有关系计数的列

  12. 12

    返回laravel中的所有关系数据

  13. 13

    如何在laravel 5.2中克隆具有所有关系的雄辩的对象

  14. 14

    如何在laravel 5.2中克隆具有所有关系的雄辩的对象

  15. 15

    Laravel-具有所有关系的dd()模型

  16. 16

    Laravel雄辩的所有关系

  17. 17

    Laravel Multiple有关系的标准

  18. 18

    Laravel Eloquent - 是否有关系?

  19. 19

    Laravel + Vue 返回具有多个关系的数据

  20. 20

    具有多个关系的laravel数据库查询

  21. 21

    在Laravel-4中具有关系的批处理插入对象

  22. 22

    Laravel雄辩地将变量传递给具有关系函数

  23. 23

    Laravel:创建具有关系的记录时,无法将外键插入表

  24. 24

    如何使用具有关系Laravel的模型获得单个元素

  25. 25

    Laravel 5.1:尝试在具有关系的foreach循环中获取非对象的属性

  26. 26

    Laravel:三个有关系的表来获取数据

  27. 27

    具有大量关系的Laravel查询

  28. 28

    Laravel Eloquent具有很多关系

  29. 29

    Laravel Eloquent具有很多关系

热门标签

归档