【问题标题】:Laravel Select Name and id of Model and use in SelectBoxLaravel 选择模型的名称和 id 并在 SelectBox 中使用
【发布时间】:2016-09-21 12:02:39
【问题描述】:

这是我的控制器中的当前功能:

public function addProduct()
{
    $categories = Category::all();

    return view('admin.products.add')->with('categories', $categories);
}

我只想从类别模型中选择列“名称”和“id”并将它们分配给我的视图中的选择框,如下所示:

<select>
    <option value="ID">NAME</option>
</select>

如何使用Form-Facade 做到这一点?

【问题讨论】:

  • 问题是$categories 已经在那个视图上使用了。因此,我只需要更改变量名。感谢@Filip Koblański

标签: forms laravel drop-down-menu


【解决方案1】:

尝试使用 laravel Collection 中的 pluck 方法:

$categories = Category::all()->pluck('name', 'id');

然后在视图中:

{!! Form::select('name', $categories) !!}

【讨论】:

  • 嗯,$categories 返回的正是我想要的(检查了dd(),它返回了0 =&gt; 'Category 1',但我得到了trying to get property of non-object
  • 但是你从哪里得到这个异常?
  • 在我看来我正在使用{!! Form::select('name', $categories) !!}
  • 您是否使用:Form::model 创建&lt;form&gt; 标签?
  • 我照常使用Form:open
【解决方案2】:

试试这个生成所有类别

<select name="category" class="form-control">
  @foreach($categories as $category)
    <option value="{{ $category->id }}">{{ $category->name }}</option>
  @endforeach                 
</select>

如果你想选择特定的类别,那么就这样做

<select name="category" class="form-control">
  @foreach($categories as $category)
    <option value="{{ $category->id }}" <?php if($hotel->category_id == $category->id) { echo "selected";}?>>{{ $category->name }}</option>
  @endforeach                 
</select>

【讨论】:

  • 这可以使用Category:all(),但是当我使用Category::all()-&gt;pluck('id', 'name'); 时会出现trying to get property of non-object 错误。你知道为什么吗? id 和 name 是我对应的Category-Model 数据库的列名
  • 这样做 $categories = Category::select('id', 'name')->get();
  • Pluck 返回对象数组,全部返回数组对象数组
【解决方案3】:

您可以使用foreach here

在您的刀片视图中。

<select name = "category[]">
    @foreach($categories as $category)
       <option value = "{{$category->id}}">{{$category->youValueHere}}></option>
    @endforeach
</select>

【讨论】:

  • 如果可能的话,我更喜欢 Form Facade
  • 你为什么不先试试这个。如果可行,将其转换为外观形式。
【解决方案4】:

列表在 L5.2 中被弃用并在 L5.3 中被删除

试试这个,简单又整洁。

$categories = Category::lists('name', 'id');

{!! Form::select('categories[]', $categories, null, [ 
        'class' => 'form-control', 'multiple'
]) !!}

【讨论】:

  • lists() 是否可能不适用于模型? Call to undefined method Illuminate\Database\Query\Builder::lists()
  • lists 在 L5.2 中被弃用并在 L5.3 中被删除
猜你喜欢
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 1970-01-01
相关资源
最近更新 更多