Laravel-5.6'LIKE'在哪里选择

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel-5.6'LIKE'在哪里选择相关的知识,希望对你有一定的参考价值。

我使用此查询,我收到一个错误:

 $description = $request->get('description');
        if (!empty($description)){
        $description_query = Transcationhistorique::where(['sender_id' => $user_id, "%$description%", 'LIKE','description'])
            ->orWhere('receiver_id', $user_id)->get();
        }else{
            $description_query  =  "" ;
        }

这是我得到的错误:

“SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'0'(SQL:select * from transcation_historique where(sender_id = 32 and 0 =%salaire%and 1 = LIKE and 2 = description)或receiver_id = 32)“

这就是我真正想要的:

select * from `transcation_historique` where (`sender_id` = 32 and `description` = %salaire%) or `receiver_id` = 32)
答案

试试这个,

$description_query = Transcationhistorique::where(
                         function($query) use ($user_id, $description){
                             return $query->where('sender_id', $user_id)
                                          ->where('description', 'like', '%' . $description .'%');

                         }
                     )
                     ->orWhere('receiver_id', $user_id)
                     ->get();
另一答案

看起来你的查询结构不正确。如果要使用“=”Source以外的运算符,则应使用以下结构

$query->where([
    ['column_1', '=', 'value_1'],
    ['column_2', '<>', 'value_2'],
    [COLUMN, OPERATOR, VALUE],
    ...
])

我的建议是:

 $description = $request->get('description');
 if (!empty($description)){
     $description_query = Transcationhistorique::where([
            ['sender_id', '=', $user_id],
            ['description', 'LIKE', "%{$description}%"]
     ])
     ->orWhere('receiver_id', $user_id)->get();
 }else{
     $description_query  =  "" ;
 }

另一答案

试试这个:

Transcationhistorique::where('receiver_id', '=', $user_id)
        ->orWhere(function ($query) use ($user_id, $description) {
            $query->where('sender_id', '=', $user_id)->where('description', 'LIKE', "%".$description."%");
        })->get();
另一答案

您可以使用多个where方法作为and。你能试试下面的代码吗?

    $description = $request->get('description');
    if (!empty($description)){
        $description_query = Transcationhistorique::where('sender_id', $user_id)
        ->where("description", 'LIKE','%' . $description . '%')
        ->orWhere('receiver_id', $user_id)->get();
    }else{
        $description_query  =  "" ;
    }

以上是关于Laravel-5.6'LIKE'在哪里选择的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.6 OneToOne 关系不起作用

Laravel 5.6 API 资源未显示关系数据

SQL中like的用法

mysql like时查询不到数据,实际是有的

请教在MySQL怎么反过来LIKE某个字段? 我们通常都是 LIKE '%关键字%' 这样找出记录 我现在的情况是在字段

mysql like查询语句