При красноречивой выборке данных в fieldname => fieldvalue keys - PullRequest
0 голосов
/ 24 июня 2019

В laravel 5.8 делая запрос

        $searchResultsArray = SearchResult
            ::getBySourceId($next_sourceId['source_id'])
            ->select( 'field', 'value' )
            ->get()
            ->toArray();

Я получил результирующие строки, такие как:

$searchResultsArray::Array
(
    [0] => Array
        (
            [field] => Id
            [value] => 302530
        )

    [1] => Array
        (
            [field] => Domain
            [value] => site.com
        )

Если есть способ получить массив полей name => fieldvalue keys, например

Id => 302530 
Domain=> site.com

без аддитивного блока foreach в моем коде?

Если да, то как?

1 Ответ

1 голос
/ 24 июня 2019

Да, есть. Eloquent всегда возвращает коллекции. Вы можете сначала изменить коллекцию с помощью mapWithKeys() (https://laravel.com/docs/5.8/collections#method-mapwithkeys), а затем преобразовать ее в массив.

Попробуйте что-то вроде этого:

$searchResultsArray = SearchResult
    ::getBySourceId($next_sourceId['source_id'])
    ->select( 'field', 'value' )
    ->get()
    ->mapWithKeys(function ($item) {
        return [$item['field'] => $item['value']];
    })
    ->all();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...