【问题标题】:Multiple column with same search string in laravellaravel中具有相同搜索字符串的多列
【发布时间】:2018-09-01 07:08:16
【问题描述】:
SELECT * 
FROM table_name 
WHERE 
    CONCAT(id,name, address) LIKE '%same_string%' 

Laravel 中的替代查询是什么

【问题讨论】:

标签: php laravel laravel-5


【解决方案1】:

试试这个。

$field = ['name','id','address'];
$name = DB::Table('bookinfo')->Where(function ($query) use($string, $field) {
             for ($i = 0; $i < count($field); $i++){
                $query->orwhere($field, 'like',  '%' . $string .'%');
             }      
        })->get();

【讨论】:

  • 这不适用于 concat 函数。从 DB 返回 NULL。
  • 我认为这段代码会成功执行,但我需要一个良好的结构化代码,如 mysql 查询。
  • 需要访问$field $query-&gt;orwhere($field[$i], 'like'的每个$i
【解决方案2】:

** Laravel - 单个输入中多列的一般搜索

**

名、姓、职称列中的一个用户表可用,我在任何值中都有一个输入搜索,然后在关联数据获取中找到所有列并显示

 $searchQuery = trim($request->query('search'));
 $requestData = ['firstname', 'lastname', 'job_title'];
  $user = User::where(function($q) use($requestData, $searchQuery) {
                        foreach ($requestData as $field)
                           $q->orWhere($field, 'like', "%{$searchQuery}%");
                })->get();

【讨论】:

    【解决方案3】:

    试试这个单独的列

    DB::table("table_name")->whereRaw(" (`id` like ? or `name` like ? or `address` like ? ) ",["%".$same_string."%","%".$same_string."%","%".$same_string."%"])->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 2019-08-15
      相关资源
      最近更新 更多