Массив толчок в Лмаре
Вопрос
Я пытаюсь нажать на новый элемент массива в существующую переменную массива, которая имеет элементы из базы данных. То, что я хочу сделать, это добавить новый товар с именем «другие» в конце этого массива и отобразить его в виде выбора, который состоит из всех элементов из базы данных и в конце этого выберите пункт «другие», который Я вручную добавил в моем контроллере.
Вот что я пытался сделать:
$competition_all = Competition::all();
$newCompete = array('name'=>'Others');
array_push($competition_all, $newCompete);
$this->competition_games = array('Competition');
foreach ($competition_all as $competition_games) {
$this->competition_games[$competition_games->name] = $competition_games->name;
}
.
Что он сказал, это как это
Необработанное исключение
Сообщение:
Попытка получить свойство не объекта Расположение:
C: \ xampp \ htdocs \ Khelkheladi \ Khelkheladi \ Приложение \ Контроллеры \ register.php на линии 104
В моей базе данных конкурс имеет этот тип структуры столбца
.->id ->year ->place ->name ->created_at ->updated_at
в заданном порядке.
Что я пытаюсь сделать, это не вставляя элемент в базе данных, просто статически показывает остальные выберите элемент в поле «Выбрать тег». Как вставить такой новый элемент, не вставляя его в базу данных, но только для отображения в виду?
Выход тому, что я получаю раньше, просто извлечение элемента базы данных, как это
.<select> <option value="1">Value 1</option> <option value="2">Value 2</option> <option value="3">Value 3</option> <option value="4">Value 4</option> </select>
Что я люблю делать это как это
.<select> <option value="1">Value 1</option> <option value="2">Value 2</option> <option value="3">Value 3</option> <option value="4">Value 4</option> <option value="5">Others</option> </select>
Решение
«Чистый» способ сделать это, чтобы создать экземпляр Competition
, не совершая его в базу данных, и еще раз повторить ваш цикл с дополнительным экземпляром.
Тем не менее, здесь вы, кажется, просто создаете список, поэтому он должен быть достаточно, чтобы сделать гораздо быстрее дополнение к окончательному списку:
$competition_all = Competition::all();
$this->competition_games = array('Competition');
foreach ($competition_all as $competition_games) {
$this->competition_games[$competition_games->name] = $competition_games->name;
}
$this->competition_games['name'] = 'Others';
. Другие советы
Это потому, что вы добавляете не объект к последнему элементу массива.
Здесь я предполагаю, что вы получите массив объектов с именем свойство
$competition_all = Competition::all();
.
Здесь вы добавляете ключ=> Value Pair до последнего элемента массива объектов
$newCompete = array('name'=>'Others');
array_push($competition_all, $newCompete);
.
Здесь вы проходите через массив объектов, и когда дело доходит до последнего элемента «$ Communal_games-> name» не имеет свойств NO имени
foreach ($competition_all as $competition_games) {
$this->competition_games[$competition_games->name] = $competition_games->name;
}
.
попробуйте что-то вроде, включая STDClass для нее:
$newCompete = new StdClass();
$newCompete->name = 'Others';
array_push($competition_all, $newCompete);
.