Запрашивает один столбец и возвращает разделенный запятыми Laravel PHP

#php #mysql #laravel

#php #mysql #laravel

Вопрос:

  $getStrain = DB::connection('mysql')->select('
    SELECT
        
       b.yeast_class_id
    FROM 
        yeast_classes AS a
    LEFT JOIN
        classes_per_yeast AS b 
    ON 
        a.id = b.yeast_class_id
    WHERE
        b.yeast_id = "'.$id.'"
    GROUP BY
        b.yeast_class_id
');

dd($getStrain);
  

и он возвращает что-то вроде этого

введите описание изображения здесь

Но то, что я хочу сделать, это получить ответ примерно так

1,4,5,6,7

где все yeast_class_id будет объединено вместе

Ответ №1:

Из этого массива объектов, которые у вас есть, вы можете pluck преобразовать нужное вам поле из них в массив:

 IlluminateSupportArr::pluck($getStrain, 'yeast_class_id')
  

Или поместите массив в коллекцию и используйте pluck метод для коллекции:

 collect($getStrain)->pluck('yeast_class_id')->all()
  

Если вам нужна строка списка, разделенная запятыми:

 collect($getStrain)->pluck('yeast_class_id')->join(',')
  

Документы Laravel 8.x — Помощники — Массив и объекты — Arr::pluck

Документы Laravel 8.x — Помощники — Разное — collect

Документы Laravel 8.x — Коллекции — Доступные методы — pluck

Документы Laravel 8.x — Коллекции — Доступные методы — all

Документы Laravel 8.x — Коллекции — Доступные методы — join

Ответ №2:

Проверьте вспомогательные значения ()

 $getStrainValues = $getStrain->values();