@kostya1704

Как построить запрос?

5fe87fad476e8007937036.png

$body_type = implode("','",$body_type);
    
$body_type = "'".$body_type."'";
echo $body_type;

       $poisks = DB::table('items')
 ->where('brand',$brand)
 ->where('location',$location)
 ->where('fuel_type',$fuel_type)
 ->whereBetween('price', [$price_from, $price_to])
 ->whereIn('body_type', [$body_type])
 ->whereIn('model', ['100','80','q5','a1'])
 ->orderBy('id', 'asc')
 ->paginate(5);
dd($poisks);

Добрый день.
Когда ->whereIn('body_type', [$body_type]) так записана переменная, результат на скрине 2 номер.
Когда echo $body_type; скопировать с экрана и вставить ->whereIn('body_type', ['Седан','Универсал','Хечбек','Минивен','Джип','Микроавтобус']) вот так , запрос работает. Пол-дня сижу,непойму ???
Почему ->whereIn('body_type', [$body_type]) это даёт пустой результат ?
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Kostik_1993
Fullstack Web Developer | PHP | Laravel | Vue.js
Потому что сначала учатся, потом пишут, а не наоборот.
Сначала $body_type был массивом, далее его же ты сделал строкой, потом еще зачем-то обернул в кавычки, а после всех манипуляций пытаешься скормить все это говно методу whereIn который от тебя ждет массив, а не строку

<?php

/**
 * Вот тут было так, в этом месте у тебя массив превратился в строку
 * $body_type = implode("','",$body_type);
 */
$body_type_string = implode("','",$body_type);
    
/**
 * Далее эту же строку поместил в кавычки. Наверное для пущей надежности
 * $body_type = "'".$body_type."'";
 */
echo $body_type_string;

 $poisks = DB::table('items')
     ->where('brand',$brand)
      ->where('location',$location)
      ->where('fuel_type',$fuel_type)
      ->whereBetween('price', [$price_from, $price_to])
      ->whereIn('body_type', $body_type)
      ->whereIn('model', ['100','80','q5','a1'])
      ->orderBy('id', 'asc')
      ->paginate(5);

dd($poisks);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы