Функция implode возвращает implode(): переданы недопустимые аргументы

Я взрываю какой-то идентификатор, он работает, когда массив имеет хотя бы 1 значение. если массив равен нулю, функция implode возвращает ошибку как implode(): переданы недопустимые аргументы

$arr=implode(',', $request->id);


 $product= DB::table('sub_categories')
        ->join('categories','sub_categories.category_id','=','categories.category_id')
        ->join('products','sub_categories.subcategory_id','=','products.subcategory_id')
         ->join('colors','colors.color_id','=','products.product_color')
         ->select('products.*','categories.category_name','sub_categories.subcategory_name','colors.*')
         ->whereRaw('color_id IN ('.$arr.')')
         ->where(strtolower('sub_categories.subcategory_slug'),$request->subcategory_id) 
        ->orderBy('products.product_name','ASC')
        ->get();
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
142
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте использовать значение по умолчанию для учета сценария, когда $request->id имеет значение null

$arr = implode(',', $request->input('id', []));

Может сделать whereIn условно в запросе


```php
$arr=implode(',', $request->input('id', []));


 $query= DB::table('sub_categories')
        ->join('categories','sub_categories.category_id','=','categories.category_id')
        ->join('products','sub_categories.subcategory_id','=','products.subcategory_id')
         ->join('colors','colors.color_id','=','products.product_color')
         ->select('products.*','categories.category_name','sub_categories.subcategory_name','colors.*')
         ->where(strtolower('sub_categories.subcategory_slug'),$request->subcategory_id);

if (!empty($arr)) {    
    $query->whereRaw('color_id IN ('.$arr.')');
}

$product = $query->orderBy('products.product_name','ASC')->get();

Если $request->input('id') возвращает null, тогда $arr будет пустой строкой, поэтому, если вы используете whereIn в запросе, то, естественно, это даст ошибку. У вас также должны быть некоторые значения по умолчанию для запроса, иначе всякий раз, когда $request->input('id') имеет значение null, запрос выдаст ошибку. Или у вас может быть условие в запросе. Если вы можете опубликовать код запроса, может быть, я могу предложить

Donkarnash 11.12.2020 13:12

@seemapatil Обновил ответ, чтобы включить ваш запрос, дайте мне знать, работает ли он для вас

Donkarnash 11.12.2020 13:23

Если данные не являются массивом, функция implode() выдаст предупреждение об ошибке. Чтобы избавиться от ошибки, вы можете проверить массив методом is_array():

if (is_array($request->id)){
   $arr = implode(',', $request->id);
} else {
   $arr = NULL;
}

Другие вопросы по теме