Вопрос

Я пытаюсь нажать на новый элемент массива в существующую переменную массива, которая имеет элементы из базы данных. То, что я хочу сделать, это добавить новый товар с именем «другие» в конце этого массива и отобразить его в виде выбора, который состоит из всех элементов из базы данных и в конце этого выберите пункт «другие», который Я вручную добавил в моем контроллере.

Вот что я пытался сделать:

    $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);
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top