laravel - 如何使用相关模型操作 Laravel 集合并返回自定义实例?
问题描述
我的模型关系
return $this->hasMany('App\Models\Opportunity')->with('user');
我的尝试
$project = Project::find(1);
$$opportunities = $project->opportunities
->where('status', "confirmed");
$opportunities->each(function ($opportunity) {
return $opportunity->get('user');
});
目标
我的目标是以下列结构返回数据:
Opportunities:
Opportunity:
Status,
Amount
Currency
Name
请注意,用户是机会本身的子集。
问题
这将返回 1024 SQL 错误。
理想情况下
如果我可以使用查询本身返回所有这些信息,那将是理想的。
解决方案
在您的查询上调用get()
方法以首先获取其结果:
$oppurtunities = $project->opportunities()
->where('status', "confirmed")
->get();
您已经急切地user
为每个实例加载了实例,opportunity
因此只需调用$opportunity->user
以返回每个机会的用户:
$project = Project::find(1);
$opportunities = $project
->opportunities()
->where('status', "confirmed")
->get();
$filtered = $opportunities->map(function ($opportunity) {
return [
'status' => $opportunity->status,
'amount' => $opportunity->amount_pledged,
'currency' => $opportunity->currency,
'name' => optional($opportunity->user)->full_name
];
})->all();
推荐阅读
- r - 如何在 R 中使用 glm 获得“二项式比例的 95%CI”
- laravel - 带有参数的身份验证中间件 - Laravel
- c++ - 在 MPI 进程中使用“break”有什么问题吗?
- android - Kotlin - 无法解析的日期
- django - 如何使用覆盖创建方法在 Django 休息框架中发布 OneToOne 字段
- python - Matplotlib 删除图形边界
- git - Git LFS 存储数据库迁移历史
- python - Plotly:Boxplot 不显示带有 x 和 y 的水平框,并给出了列表/数组
- mysql - mysql SELECT 喜欢和喜欢的地方
- sql - 在文本数据类型的数字上使用 MIN?