【问题标题】:Search in all columns (Eloquent)在所有列中搜索 (Eloquent)
【发布时间】:2021-03-24 12:38:26
【问题描述】:

我正在做一个在表的所有列中搜索的方法

$busqueda = $request->input('buscar');

/* Get columns */
$client = new Crmclient;
$table = $client->getTable();
$columns = \Schema::getColumnListing($table);


foreach ($columns as $column) {
     $users_client = Crmclient::where('user_id', Auth::id())
           ->where($column, 'like', '%' . $busqueda . '%')
           ->orWhere('user_id_subaccount', Auth::id())
           ->where($column, 'like', '%' . $busqueda . '%')
           ->get();
                        
}

怎么了?我可以得到所有的列,如果我在循环中在某些交互中执行 var_dump,它会查找我,而在其他交互中则不会,但最后我得到了空数组

【问题讨论】:

  • 为什么要加倍:->where($column, 'like', '%' . $busqueda . '%') ?
  • 它的工作方式与条件相同。 if ($var1 && $var2 || $var1 && $var3)
  • 可以实现全文搜索吗?使用全文索引搜索列太容易了。这是reference,希望对您有所帮助
  • 我想你可以在这里找到答案stackoverflow.com/questions/28543166/…

标签: laravel eloquent


【解决方案1】:

试试这个

$columns = \Schema::getColumnListing((new Crmclient)->getTable());

$users_client = Crmclient::where(function ($query) {
    $query->where('user_id', Auth::id())->orWhere('user_id_subaccount', Auth::id());
})->where(function ($query) use ($columns, $busqueda) {
    foreach ($columns as $column) {
        $query->orWhere($column, 'like', "%{$busqueda}%");
    }
})->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 2017-11-23
    • 2016-10-26
    • 2014-10-25
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多