Laravel-5.6 «НРАВИТСЯ», где выбрать - PullRequest
0 голосов
/ 26 февраля 2019

Я использую этот запрос, и я получаю ошибку:

 $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 Неизвестный столбец '0' в 'предложении where' (SQL: выберите * из transcation_historique, где (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)

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019

Попробуйте это:

Transcationhistorique::where('receiver_id', '=', $user_id)
        ->orWhere(function ($query) use ($user_id, $description) {
            $query->where('sender_id', '=', $user_id)->where('description', 'LIKE', "%".$description."%");
        })->get();
0 голосов
/ 26 февраля 2019

Вы можете использовать несколько 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  =  "" ;
    }
0 голосов
/ 26 февраля 2019

Похоже, ваш запрос where не структурирован правильно.Вам следует использовать следующую структуру, если вы хотите использовать операторы, отличные от "=" Источник

$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  =  "" ;
 }

0 голосов
/ 26 февраля 2019

Попробуйте,

$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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...