php - Laravel 5.5 关系采摘在检索子关系时不起作用
问题描述
我有一个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,即服务的子关系,就像我所说的那样。一个服务有很多类别,我只想根据下拉列表中选择的服务在下拉列表中显示类别,该下拉列表是在Laravel pluck的帮助下根据现有记录自动选择的。
但是,第二个dropdown
或categories
为空或第二个查询不起作用。
以下是我在服务模型中定义我的关系的方式。
public function categories()
{
return $this->hasMany('App\Models\Categories', 'service_id', 'id');
}
现在我的刀片文件中的代码
<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>
感谢有人可以提供帮助。提前致谢。
解决方案
我会看看你传递给的值pluck
。由于您正在使用第二个查询生成一个新集合,我相信您应该能够调用pluck('name', 'id');
. categories
。_ column_name
用于避免查询中的歧义,但集合所做的只是检索模型,因此如果您使用不带表前缀的属性名称 - 您应该得到您所追求的。
我之前假设您正在通过查询处理排序;因为您也在集合级别处理它,所以我也会categories
从该字段中删除前缀。您还可以调整查询以使用该->orderBy()
方法并将字段名称作为数组传递以获取(如下所示:)->get(['name', 'id'])
。这完全取决于您的需求 - 如果我的第一个建议对您不起作用,您可以将排序和过滤移至查询。希望对一些人有所帮助。
推荐阅读
- git - 我可以在不提交的情况下切换分支吗?
- msbuild - 如何在单个构建中为 2 个平台构建项目
- php - 由于 503 错误,多个 php 脚本运行了几天
- arrays - 如何查看数组中的每个值是否小于某个数字?
- kotlin - LiveData null 在 Kotlin 中是否安全?为什么Android Studio可以编译?
- python-3.x - 如何使用 boto3 获取使用 iam 证书的 aws 资源的 arn 列表
- html - 使用jquery获取同一类的元素之间的所有元素
- python - 在 Python 中为 Selenium 自动下载适当的 chromedriver
- iis - IIS 10.0 (Windows Server 2019) 对于所有网页返回安装了所有功能的空白页面
- reactjs - 当我更新状态时,结果不会更新,直到我使用 useEffect 钩子刷新页面