gpt4 book ai didi

php - 在 Laravel 5.4.36 中使用模型搜索数据

转载 作者:行者123 更新时间:2023-11-29 02:12:55 26 4
gpt4 key购买 nike

我已经创建了一个搜索过滤器。基本上我从单个表中获取记录,所以它工作正常。但是当我尝试从另一个表中获取数据时,它是不正确的。这是我的drivers_table(driver_id是PK)

Drivers Table

我正在使用这个查询..

$drivers = Drivers::where('city', 'like', "$keywords[0]%")
->Where('first_name', 'like', "$keywords[1]%")
->get();

我有两个下拉菜单,假设我有 50 个司机,当我从第一个下拉菜单中选择城市 “DOHA” 时,使用 ajax 获取 50 个司机中的 20 个司机的记录,然后我选择first_name "ASFAND" 从第二个下拉列表中,它从 20 个驱动程序列表中获取名字为 Asfand 的人的记录。有 5 个人的名字叫 Asfand,他们也来自多哈市(因为我从第一个下拉列表中选择了 DOHA 作为城市,从第二个下拉列表中选择了 first_name 作为 Asfand。

一切正常。但现在我的问题是我有第三个下拉菜单,我将从中选择银行名称,但银行名称不在驱动程序表中,还有另一个表。

银行(id、driver_id、bank_name)..

Banks Table

我现在如何获取记录?

$drivers = DB::table('drivers')
->join('bank','bank.driver_id','=','drivers.driver_id')
->where('city', 'like', "$keywords[0]%")
->Where('first_name', 'like', "$keywords[1]%")
->orWhere('bank.bank_name', 'like', "$keywords[3]%")
->get();

现在,如果我从第一个下拉菜单中选择多哈,它不会显示任何记录。如果我从第三个下拉菜单中选择银行名称,那么它会显示记录。我希望下拉菜单是独立的。

如果我没有从第三个下拉列表中选择任何内容,它应该仍会显示我从前两个下拉列表中选择的内容。

最佳答案

只有在需要时才可以使用联接。

 $drivers = DB::table('drivers')
->where('city', 'like', "$keywords[0]%")
->where('first_name', 'like', "$keywords[1]%")
->when(!empty($keywords[3]), function ($query) use ($keywords) {
$query->join('bank','bank.driver_id','=','drivers.driver_id')
$query->where('bank.bank_name', 'like', $keywords[3].'%');
})

关于php - 在 Laravel 5.4.36 中使用模型搜索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46951203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com