首页 > 解决方案 > 如何在 Laravel 中查询多个数据集

问题描述

我正在努力获取与当前类别(多个数据集)和城市匹配的地点列表:

我所做的是以下,

 $cat = Category::find($request->category_id)->toArray();

 $cat_id = $cat['id'];

$places = DB::table('places')
    ->where('category',$cat_id)
    ->where('city_id', $request->city_id)
    ->get();

查看数据集的屏幕截图:

数据库中的数据

标签: laraveleloquentlaravel-query-builder

解决方案


对于您当前的问题,您可以使用LIKE运算符。

$places = DB::table('places')
->where('category','LIKE', '%"'.$cat_id.'"%')
->where('city_id', $request->city_id)
->get();

但上面的代码不会永久解决您的问题。在这种情况下,您似乎正在尝试创建多对多关系,这是为此使用数据透视表的最佳实践。如果您可以更新模式作为示例并遵循 Laravel 标准来实现这一点,那就更好了。例子:

table: category_place , having columns ["category_id", "place_id"] 

同样,您需要更新以下架构

  • 地点类型

    表:place_place_type,列 [“place_id”,“place_type_id”]

  • 设施

    表:amenity_place,列 [“amenity_id”,“place_id”]

参考。链接:https ://laravel.com/docs/8.x/eloquent-relationships#many-to-many-polymorphic-relations


推荐阅读