Я прочитал Дейл Рис Код Яркий узнать больше о Eloquent Collection
S используется в 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
объект.
Чтобы вставить элемент в коллекцию, обратитесь к этому ответу; Ответ
По сути, разбивает коллекцию, добавляет элемент по соответствующему индексу.
Вы можете добавить элемент в 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
,
Других решений пока нет …