gpt4 book ai didi

php - 在多个表中搜索并在所有表中应用条件

转载 作者:行者123 更新时间:2023-11-29 16:50:28 24 4
gpt4 key购买 nike

我有 2 个表,它们之间存在多对多关系,该关系存储在 ptivot 表中

  • cpts
  • 提供商
  • provider_cpts

我想在两个字段中使用关键字在 cpts 中搜索,并在使用一个关键字的提供商中搜索,条件必须适用于 boh 表,例如我想搜索

heart surgery

以cpts和

oklahoma

在提供商中,所以我想获取包含这些关键字的所有 cpt 以及与此 cpt 相关并包含 oklahoma 关键字的提供商的数量。我正在使用 laravel我尝试这样做

Cpt::where('title', 'like','%' .$keyword.'%')
->OrWhere('description','like','%'.$keyword.'%')
->whereHas('providers',function($query) use($state){
if(!is_null($state)){
$query->where('providers.state','like','%'.$state.'%')->orderBy('state')->orderBy('city');
}
})
->with('providers','providers.oneCptPrice','prices')
->orderBy('id','DESC')->paginate(50);

最佳答案

  1. 您需要将前两个 where 子句组合在一起。

  2. 您不仅需要为 whereHas() 函数设置条件,还需要为 with() 函数设置条件。

    <
  3. 而且您不需要订购 wherehas() 函数。因为你得不到结果。相反,您需要订购 with() 函数,因为您可以在那里得到结果。

Cpt::where(function($query) {
$query->where('title', 'like','%' .$keyword.'%')
->OrWhere('description','like','%'.$keyword.'%')
})
->whereHas('providers',function($query) use($state){
if(!is_null($state)){
$query->where('providers.state','like','%'.$state.'%');
}
})
->with([
'providers' => function ($query) use ($state) {
if(!is_null($state)){
$query->where('providers.state','like','%'.$state.'%')
->orderBy('state')->orderBy('city');
->with('oneCptPrice');
}
},
'price'
])
->orderBy('id','DESC')->paginate(50);

关于php - 在多个表中搜索并在所有表中应用条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52835166/

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