【发布时间】:2020-04-03 06:48:22
【问题描述】:
我正在开发一个拼车应用程序,根据Laravel 中的以下查询的状态显示当前可用的汽车
$cars = CarType::select('id')->where('status','Active')->get();
我需要实现一个用户招聘偏好,用户可以在其中保存他想租用的服务。为此,我计划将用户首选的carid's 保存为users 表中的逗号分隔值,如下所示
然后我想根据每个用户的偏好显示汽车,例如
select c.id from car_type c
INNER JOIN
users u
on c.id in **car id's saved in ride_preferences column in users table**
and c.status='Active'
where('id', $user_details->id)->first();// my current laravel query to check current user
如何在Laravel 中编写上述查询?
【问题讨论】:
-
在 $user_details 变量中你有用户对象吗?
-
$user_check = User::where('id', $user_details->id)->first();
-
tbh,在逗号分隔的列中使用首选的
carId对于适当的关系数据库来说并不是一个好主意。但考虑到你有点卡住,我只能提供this approach that uses a rather complicated stored procedure。您可以将管道(|)更改为逗号,然后先修剪输出。如果您想将逻辑保留在应用程序中,那么执行循环是您最好的选择(但它会更糟地影响您的性能)。奇怪的问题,表结构是固定的还是我们有机会解决问题? -
我认为您的数据库 (Mysql) 选择对于拼车应用程序是不正确的,请考虑在 100-150 个同时连接后您将收到的应用程序设计和流量。还有其他像 RethinkDB 这样的开源实时数据库,只要我的 2 美分
-
@MahmoudMostafa 我知道这一事实,但我只是将其列为示例。