首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Search BelongsTo

Laravel Search BelongsTo
EN

Stack Overflow用户
提问于 2020-07-19 09:16:41
回答 1查看 49关注 0票数 2

我正在做一个搜索功能,我正在使用orWhere,然而,我遇到了一个问题,我想通过文本搜索brand_id。在我的模式中,我将其设置为belongsTo,但是有什么方法可以在MySQL搜索项中使用它吗?

我的搜索查询

代码语言:javascript
复制
$products = Product::where('name', 'LIKE', '%' . $searchTerm . '%')
->orWhere('title', 'LIKE', '%' . $searchTerm . '%')
->orWhere('description', 'LIKE', '%' . $searchTerm . '%')
->orWhere('allergies', 'LIKE', '%' . $searchTerm . '%')
->orWhere('price', 'LIKE', '%' . $searchTerm . '%')->paginate(15);

我想以某种方式包括品牌名称,而不是我在数据库中的brand_id。有什么方法可以做到这一点吗?我在我的产品模型中把它像这样链接起来

代码语言:javascript
复制
public function brand()
{
    return $this->belongsTo(Brand::class);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-19 09:34:25

您可以使用orWhereHas:

代码语言:javascript
复制
$products = Product::where('name', 'LIKE', '%' . $searchTerm . '%')
                ->orWhere('title', 'LIKE', '%' . $searchTerm . '%')
                ->orWhere('description', 'LIKE', '%' . $searchTerm . '%')
                ->orWhere('allergies', 'LIKE', '%' . $searchTerm . '%')
                ->orWhere('price', 'LIKE', '%' . $searchTerm . '%')
                ->orWhereHas('brand', function($q) use ($searchTerm){
                    $q->where('name', 'LIKE', "%{$searchTerm}%");
                })
                ->paginate(15);

https://laravel.com/docs/master/eloquent-relationships#querying-relationship-existence

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62975347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档