laravel - 如何在多列中搜索?

标签 laravel

我需要在users中搜索与名称的表,如果表中没有与任何名称匹配的表,则转移到与每个用户相关的类别表。

html的代码:

 <form action="{{ route('search') }}" method="GET">
   <input type="search" class="input" name="q" placeholder="Search">
 </form>

Controller 代码(我的关闭):
public function search(Request $request)
{
  $users = new User;

  $req = $request->input('q');

  $users = $users->where('name','LIKE','%'. $req .'%')->whereHas('category', function ($query) use($req) {
    $query->where('name','LIKE','%'. $req .'%');
  });

  $users = $users->unverified()->active()->orderBy('id','desc')->paginate(16);
  return view('frontend.search.search', compact('users'));

}

类别与用户有关系:
public function category()
{
    return $this->belongsTo('App\Category');
}

我需要说如果没有名称(用户表)检查类别一。

最佳答案

您将需要使用 orWhere 方法,这意味着 or 做另一个。为了避免奇怪的逻辑,将它包装在 where 闭包中是最简单的方法。

$users = User::where(function ($query) use($req) {
    $query->where('name','LIKE','%'. $req .'%')
        ->orWhereHas('category', function ($query) use($req) {
            $query->where('name','LIKE','%'. $req .'%');
        });
});

这意味着您的代码将查找具有名称或给定类别的元素。有一个边缘情况,即使设置了用户,它也会通过类别名称找到。但是避免这种情况,并不像这样直接。

关于laravel - 如何在多列中搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59308398/

相关文章:

php - 如何计算在 laravel 中使用 DB::raw() 的位置?

laravel - Laravel 5 中布局内的嵌套布局

php - Laravel( Eloquent )不更新数据库

laravel - 在 Laravel Eloquent Query 中使用 unaccent PostgreSQL 函数

laravel - Symfony\Component\Translation\TranslatorInterface::setLocale($locale) 的声明必须与

php - Durandal 上的 BreezeJS 与 PHP REST API (Laravel)

php - 选择所有不在另一个表 laravel 5.5 中的列

MySQL 访问被拒绝?

php - 使用 Spatie\MediaLibrary 上传文件时出现 Laravel 包错误

php - Laravel 自定义验证消息参数