Конвертировать Laravel коллекцию в массив без кавычек до и после скобок - PullRequest
1 голос
/ 26 марта 2020

Как удалить кавычки перед открывающей скобкой массива и после закрывающей скобки.

private function get_sector_id ()
{
    $sectors = SectorUser::select('sector_id')->where('user_id', auth()->user()->id)->pluck('sector_id');

    dd(json_encode($sectors));
}

Вывод до json_encode:

Illuminate\Support\Collection {#310 ▼
  #items: array:2 [▼
    0 => "49ea267e-d11d-4fe9-ba62-c16d620688a3"
    1 => "6ba71f44-3c29-4fe3-b7ce-9d8a15e60f33"
  ]
}

пытался использовать json_encode, но возвращается с кавычками до и после скобок массива

"["49ea267e-d11d-4fe9-ba62-c16d620688a3","6ba71f44-3c29-4fe3-b7ce-9d8a15e60f33"]"

я хочу преобразовать вывод в массив скобок, чтобы я мог использовать в запросе whereNotIn,

target is:

["49ea267e-d11d-4fe9-ba62-c16d620688a3","6ba71f44-3c29-4fe3-b7ce-9d8a15e60f33"]

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Следующий код возвращает коллекцию, элементами которой являются sector_ids.

$sectors = SectorUser::select('sector_id')->where('user_id', auth()->user()->id)->pluck('sector_id');

К счастью, Laravels, где NotIn может принимать коллекции или массивы. Просто сделать следующее будет работать. Как можно видеть здесь .

$sectorsWithoutSome = Sectors::whereNotIn($sectors)->get();

Я бы сказал, что для ответов, отличных от ответов, это анти-шаблон для преобразования ваших внутренних моделей в JSON с помощью json_encode. Часто есть подходы лучше.

0 голосов
/ 26 марта 2020

Используйте сплющить в своей коллекции.

$sectors->flatten();

https://laravel.com/docs/7.x/collections#method -платина

...