阵列推入Laravel

时间:2012-10-02 06:23:31

标签: php mysql arrays laravel

我正在尝试将新数组项推送到包含数据库项的现有数组变量中。我想要做的是在这个数组的末尾添加一个名为“Others”的新项目,并将其显示为视图中的select下拉列表,其中包含来自数据库的所有项目,并在此末尾选择“其他”项目我手动添加到我的控制器中。

这是我尝试做的事情:

    $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> 

2 个答案:

答案 0 :(得分:6)

那是因为你正在向数组的最后一个元素添加一个非对象。

这里我假设你得到一个名为property

的对象数组
$competition_all = Competition::all();

在这里,您将key =&gt;值对添加到对象数组的最后一个元素

$newCompete = array('name'=>'Others');
array_push($competition_all, $newCompete);

在这里,您可以浏览对象数组,当涉及到最后一个元素时,“$ competition_games-&gt; name”没有名称属性

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

答案 1 :(得分:1)

执行此操作的“干净”方法是创建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';