laravel - 此集合实例上不存在属性 [apps]
问题描述
我正在尝试从每个类别中获取应用程序,但它给我的属性 [应用程序] 在此集合实例上不存在
这是刀片
@foreach($app_categories->apps as $item) @endforeach
控制器
$app_categories = AppCategory::orderBy('name', 'asc')->get();
类别型号
public function apps()
{
return $this->belongsToMany(App::class, 'app_categories_relate')->orderBy('created_at', 'desc');
}
应用模型
public function appcategory()
{
return $this->belongsToMany(AppCategory::class, 'app_categories_relate');
}
解决方案
这是错误的:
@foreach($app_categories->apps as $item) @endforeach
$app_categories
是一个Collection
,所以你不能访问apps
。您需要迭代两次:
@foreach($app_categories as $app_category)
@foreach($app_category->apps as $item)
...
@endforeach
@endforeach
或者,返回一个AppCategory
:
$app_category = AppCategory::orderBy('name', 'asc')->first();
...
@foreach($app_category->apps as $item)
...
@endforeach
编辑:建议使用的其他答案with()
对于提高性能很有用,但不是必需的。如果您不使用->with('apps')
,性能会因N+1
查询逻辑而受到影响(在循环中执行多个查询,而不是预加载它们)
推荐阅读
- android - 为什么调试证书不能安全地签署 android APKs?
- python - 如何从数据框列中以大写字母拆分字符串?
- macos - 我在我的mac上安装了httpd,它找不到模块
- c# - 为什么光线投射是以相反方向绘制的光线投射?
- flutter - 如何在颤动中画出带有尖头/渐变线/的线?
- documentation - Raku 的内省可以列出不同文件/模块中的所有多候选吗?
- java - WADL2JAVA:Gradle 插件
- stripe-payments - 条纹卡支票返回 null
- c++ - 如何在 MacOS XCode 上以发布模式编译?
- javascript - 检测移动设备上的触摸移动事件