Как оценить коллекцию laravel?

Как присвоить значение первому элементу в коллекции laravel? Что-то вроде этого $collection->put('foo', 1), но добавляющее ценность первому элементу.

Collection {#376
  #items: array:1 [
    0 => array:9 [
      "id" => 83
      "status" => "offline"
      "created_date" => "Oct 31, 2018"
      // add foo => 1 here
    ]
  ]
}
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
2 884
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

использовать этот

$data = Model::all();
$data[0]->foo = 'your data here';

Model :: get () дает вам Eloquent \ Collection, дочерний объект Service \ Collections. Но каждый элемент в нем является объектом модели, а не массивом. Объекты модели имеют динамические свойства, поэтому вы можете делать то, что делаете там. Но вопрос был в сборе обычных массивов, так что это не сработает.

kmuenkel 31.10.2018 14:37

@Claymore Здесь я обращаюсь к объекту модели с помощью ->, но пользователю нужны данные первой строки, поэтому я добавил индекс [0], потому что данные представляют собой массив объектов коллекции, поэтому, пожалуйста, не голосуйте против, прежде чем внимательно его прочитать

Shailendra Gupta 31.10.2018 16:27

$collection[0] OP - это массив, а не объект модели. Я не голосовал против вас, потому что ваш код не удался, я сделал это, потому что ваша предпосылка не соответствует вопросу. Не каждый вариант использования Коллекций включает в себя красноречивые результаты.

kmuenkel 31.10.2018 17:43
Ответ принят как подходящий

Я подозреваю, что есть более чистый способ сделать это, но это лучшее, что я мог придумать на данный момент. Вы также можете использовать map или transform с прогоном сравнения ключевого значения, которое отправляется на их закрытие, но это в конечном итоге приведет к циклическому просмотру всех элементов массива, несмотря на то, что вы знаете конкретный из них, на который хотите нацелить.

$collection = collect([
    [
        'id' => 83,
        'status' => 'offline',
        'created_date' => 'Oct 31, 2018'
    ]
]);

$firstKey = $collection->keys()->first();  //This avoids the unreliable assumption that your index is necessarily numeric.
$firstElement = $collection->first();
$modifiedElement = array_merge($firstElement, ['foo1' => 1]);
$collection->put($firstKey, $modifiedElement);

Спасибо за решение. Я использовал этот подход $ item = $ collection-> first (); $ item ['foo'] = 1; вернуть сбор ([$ item]);

George 31.10.2018 15:10

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