Как вставить объект (объект типа модели) в объект коллекции в Laravel по определенному номеру индекса?

Я прочитал Дейл Рис Код Яркий узнать больше о Eloquent CollectionS используется в Laravel. Также провел какое-то другое исследование, но не смог найти ответ, который искал.

Я хочу вставить объект (Model введите объект) в Collection Объект в определенной позиции.

Например:

Это возвращенная коллекция

Illuminate\Database\Eloquent\Collection Object
(
[0] => Attendance Object
([present_day] => 1)

[1] => Attendance Object
([present_day] => 2)

[2] => Attendance Object
([present_day] => 4)

[3] => Attendance Object
([present_day] => 5)

)

Как вы можете видеть выше [present_day] иметь значения в диапазоне от 1 to 5, но ценность, 3 отсутствует в последовательности. Теперь, что я действительно хочу сделать, это, я хочу явно поставить новый Attendance Object в позиции объекта коллекции [2] номер индекса / позиция, таким образом, нажав на остальную часть объекта посещаемости. Я действительно изо всех сил пытаюсь сделать это правильно. Как я могу сделать это, чтобы объект коллекции выше выглядел примерно так:

Illuminate\Database\Eloquent\Collection Object
(
[0] => Attendance Object
([present_day] => 1)

[1] => Attendance Object
([present_day] => 2)

[2] => Attendance Object    // This is where new object was added.
([present_day] => 3)

[4] => Attendance Object
([present_day] => 4)

[5] => Attendance Object
([present_day] => 5)

)

Я думаю, что есть некоторые методы, которые позволят сделать именно так, если бы это был массив. Так как это CollectionЯ не уверен, как это сделать.

Замечания: Я не хочу преобразовывать это в массив и делать вставку в массив. По какой-то причине я хочу иметь этот вывод строго в Collection объект.

13

Решение

Чтобы вставить элемент в коллекцию, обратитесь к этому ответу; Ответ

По сути, разбивает коллекцию, добавляет элемент по соответствующему индексу.


Вы можете добавить элемент в Eloquent\Collection объект с add Способ;

$collection->add($item);  // Laravel 4

или же

$collection->push($item); // Laravel 5

Затем вы можете изменить порядок коллекции, используя sortBy Способ;

$collection = $collection->sortBy(function($model){ return $model->present_day; });

Это упорядочит коллекцию вашим present_day приписывать.


Обратите внимание, что приведенный выше код будет работать только если вы используете Illuminate\Database\Eloquent\Collection, Если вы используете равнину Eloquent\Support\Collection, здесь нет add метод.

Вместо этого вы можете использовать пустое смещение массива, как при вставке нового элемента в обычный массив:

$collection[] = $item;

Эта форма также работает на Eloquent версии Collection,

13

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector