【问题标题】:Add row manually to eloquent result in Laravel 4.2在 Laravel 4.2 中手动添加行到 eloquent 结果
【发布时间】:2018-09-23 13:42:27
【问题描述】:

我正在使用 Laravel 4.2,并使用以下代码获取所有位置:

$locations = Location::all();

此位置随后会显示在选择框中。如何在结果中添加额外的行,以便在选择框中显示空的第一个选项。

那么选项应该是:

  • 选择一个位置
  • 位置 1
  • 位置 2
  • ...

我只想在 $locations 中的结果中添加一个额外的项目。

提前致谢

【问题讨论】:

标签: laravel select laravel-4 eloquent


【解决方案1】:

你可以使用:

{!! Form::select('location', ['' => 'Select your location'] + $locations, null , ['class' => 'form-control']) !!}

更新视图。在 Laravel 5 中有 attribute accessors 可以在你的 eloquent 集合中附加一个额外的字段。

很少有其他方法可以做到这一点:

  • $locations[null] = 'choose a location'; Form::select('location', $locations);

  • Form::select('location',[null=>'Please Select'] + $locations);

另一种方法是遍历结果并更新它。使用 json_decode() 或 'toArray()` 将结果转换为数组格式。

否则您必须将 choose a location 存储为locations 表中的第一行值(我知道这不符合要求)。

【讨论】:

    【解决方案2】:

    您应该查看集合的put 方法:

    https://laravel.com/docs/5.6/collections#method-put

    此方法在 4.2 中不可用。您应该创建一个自定义 Collection 类并通过覆盖 newCollection 方法在您的模型中使用它。 https://laravel.com/docs/4.2/eloquent#collections

    【讨论】:

    • 集合在 Laravel 4.2 中不可用。
    • 看起来您必须创建一个自定义集合类。在 4.2 docs for eloquent 中,它向您展示了如何。
    猜你喜欢
    • 2020-10-18
    • 2023-04-03
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2019-01-21
    • 2017-09-13
    相关资源
    最近更新 更多