【问题标题】:How Query Multiple dataset in Laravel如何在 Laravel 中查询多个数据集
【发布时间】:2021-09-10 12:09:22
【问题描述】:

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

我所做的是以下,

 $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();

查看数据集截图:

Data in the database

【问题讨论】:

  • 你没有显示你的问题。你想要的结果是什么样的?
  • 如我所见,您已将 category 作为字符串数组存储在 places 表中,但在您的 where 子句中您传递的 $cat_id 似乎是一个整数

标签: laravel eloquent laravel-query-builder


【解决方案1】:

对于您当前的问题,您可以使用 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"] 

同理,需要更新下面的schema

  • 地点类型

    表: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

【讨论】:

  • 感谢@Aman 提出多对多关系有效的建议。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 2019-04-27
  • 2020-05-07
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多