【问题标题】:Laravel-5.6 'LIKE ' in where and or where selectLaravel-5.6 'LIKE' 在哪里和或哪里选择
【发布时间】:2019-02-27 09:56:10
【问题描述】:

我使用这个查询,我得到一个错误:

$description = $request->get('description');
                $description_query = Transcationhistorique::where(function ($query) use ($description, $user_id) {
                    $query->where('receiver_id', $user_id,'description', 'LIKE','%' . $description . '%')
                        ->orWhere('description', 'LIKE','%' . $description . '%','sender_id', $user_id);
                })->get();

这是我得到的错误:

"SQLSTATE[42S22]: 找不到列: 1054 未知列 '0' 在 'where 子句' (SQL: select * from transcation_historique where (sender_id = 32 和 0 = %salaire% 和 1 = LIKE 和 2 = 描述)或receiver_id = 32)”

这是我真正想要运行的:

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

【问题讨论】:

  • 是我的另一个问题
  • 不一样
  • 我要指出的是,您想要的选择结果与添加条件相同:所以 要解决的问题是相同的

标签: php mysql laravel laravel-5 laravel-5.6


【解决方案1】:

试试这个

Transcationhistorique::where(function ($query) use ($description, $user_id) {
            $query->where(['receiver_id' => $user_id, 'description' => 'LIKE %' . $description . '%'])
                ->orWhere(['description' => 'LIKE %' . $description . '%', 'sender_id' => $user_id]);
        })->get();

【讨论】:

    【解决方案2】:

    那么你应该使用以下语句:

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

    【讨论】:

      【解决方案3】:

      你应该试试这个:

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

      【讨论】:

      • @AhmedGuesmi:很高兴为您提供帮助 :) 如果我的回答对您有用,请接受我的回答
      【解决方案4】:

      或者使用查询生成器试试这个:

      $description_query = DB::table('transcationhistoriques')
                  ->where(['receiver_id' => $user_id, 'description' => 'LIKE %' . $description . '%'])
                  ->orWhere(['description' => 'LIKE %' . $description . '%', 'sender_id' => $user_id])
                  ->get();
      

      【讨论】:

        猜你喜欢
        • 2019-07-19
        • 2018-09-08
        • 2022-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-07
        • 2013-09-10
        相关资源
        最近更新 更多