我有一个 Laravel 5.5 应用程序,该应用程序具有编辑或更新功能,该功能具有两个下拉菜单。一个下拉列表是父级关系,第二个下拉列表是子级关系。因此基本上,第一个下拉菜单中有很多第二个下拉列表。
现在介绍我的控制器
中的代码$services = Service::all()->sortBy('code', SORT_NATURAL | SORT_FLAG_CASE)->pluck('description', 'id');
$categories = Service::with('categories')->get()->sortBy('categories.name', SORT_NATURAL | SORT_FLAG_CASE)->pluck('categories.name', 'categories.id');
我使用了pluck
方法,该方法仅检索类别的名称和ID,就像我所说的那样,它是 service 的子关系。 。一项服务具有许多类别,我只想根据所选在下拉中显示类别 >服务,然后根据 Laravel pluck 在现有记录的基础上自动选择。
但是第二个dropdown
或categories
为空或第二个查询不起作用。
这是我在 service 模型中定义我的关系的方式。
public function categories()
{
return $this->hasMany('App\Models\Categories', 'service_id', 'id');
}
现在将代码保存在我的 blade文件
中<div class="form-group col-sm-6">
{!! Form::label('service_id', 'Service:') !!}
{!! Form::select('service_id', $services, null, ['class' => 'form-control input-md','required', 'id' => 'service_id'])!!}
</div>
<div class="form-group col-sm-6">
{!! Form::label('categories_id', 'Category:') !!}
{!! Form::select('categories_id', $categories, null, ['class' => 'form-control input-md','required', 'id' => 'category_id'])!!}
</div>
感谢有人可以帮助您。 预先感谢。
答案 0 :(得分:0)
我将看看您要传递给pluck
的值。由于您使用第二个查询生成了一个新集合,因此我相信您应该能够调用pluck('name', 'id');
。 categories
。column_name
用于避免查询中的歧义,但是集合所做的所有事情都是在检索模型,因此,如果您使用不带表前缀的属性名称,则应该得到之后。
我以前假设您正在通过查询来处理排序;由于您也在集合级进行处理,因此我也将从该字段中删除categories
前缀。您还可以调整查询以使用->orderBy()
方法,并将字段名称作为要获取的数组传递(例如:->get(['name', 'id'])
)。这完全取决于您的需求-如果我的第一个建议对您不起作用,则可以将排序和过滤移到查询中。希望对您有所帮助。