对于拍摄特定的对象我有目标的一个在线竞赛 用户 上传 图片 的 对象 ,其中对象具有 类别 和 子类别 。
用户的仪表板应如下所示:
------------------------------------------------
| Category |
------------------------------------------------
| ----------------------------------------- |
| | Subcat. | Subcat. | |
| |------------------|--------------------| |
| |Object1 | Object2 | Object1 | Object2 | |
| |------------------|--------------------| |
| | Pic1 | Pic1 | Pic1 | Pic1 | |
| | Pic2 | Pic2 | Pic2 | Pic2 | |
| ---------------------------------------- |
| |
------------------------------------------------
为了能够在适当的循环中输出图片,我在模型之间安装了 hasMany 关系。所以我可以通过以下方式获得具有方便层次结构的对象
$userPics = Category::with(['subcats','subcats.objects','subcats.objects.pics'])->get();
问题:
对于仪表板,我当然只希望来自某个用户的图像: Pictures 模型包含一个 user_id
字段。我可以直接获取用户的图片:Pictures::where('user_id',$user->id)->get();
,但是我没有对象中的结构来创建上面显示的所需视图。
我该如何做这样的事情:
$userPics = Category::with([...])->where('user_id',$user->id)->get();
非常感谢您的提示!
您想要获得包含属于指定用户的图片的类别,因此您可以这样做(有点冗长):
Category::with(['subcats', 'subcats.objects' => function ($q) use ($user) {
$q->with(['pictures' => function ($q) use ($user) {
$q->where('user_id', $user->id);
}]);
}])
->whereHas('subcats', function ($q) use ($user) {
$q->whereHas('objects', function ($q) use ($user) {
$q->whereHas('pictures', function ($q) use ($user) {
$q->where('user_id', $user->id);
});
});
})
->get();
您需要在with()
此处使用嵌套的闭包,因为使用点表示法可以加载两个以上级别的关系。
如果您不需要加载图片和子类别数据,则只需删除with()
一部分即可。
如果你也想过滤的子类别,封闭增加with()
了subcats
。
问题内容: 我正在尝试使用Eloquent在数据库种子期间执行以下查询: 这是我在Eloquent中的实现: 尽管第一个查询始终返回完整结果,但Eloquent等价项始终为表的和字段以外的所有内容返回空元素。由于和模型都是工匠生成的骨架,因此我无所适从。 例如: 这是当我对种子(最初由Faker生成)的第一个口才查询dd()时输出的数组: 问题答案: 可以通过指定特定表中所需的特定列名来解决,如下
你一定看过下面的功能(在facebook上),一个有一些评论的帖子,每个评论都有一个类似的计数器。 https://img4.hostingpics.net/pics/67853820170616003640LaravelNewsAccueil.png 在拉雷维尔,这将是类似的 帖子有很多评论 以下评论发布 类似于用户的评论 CommentLike belong评论 评论有很多类似的评论 所以,现
我试图搜索所有的租金,有一个RentItem的书名像给定的$input。 问题是当输入不匹配时,我仍然返回一个集合。唯一的区别是book关系是null而不是Collection。 当book等于null时,我不希望租金模型被退回。 我的查询 租金模型关系 我做过的研究: https://laracasts.com/discuss/channels/laravel/eloquent-nested-r
我有以下三个表格: 帖子 帖子: 评论: 标签: Post表有许多注释,comments表有许多与之关联的标记。 如何使用“快速加载”将所有这些表组合在一起? 比如: 但是这个查询总是在标记关系中返回空响应。 我做错了什么? 期望的结果是这样的: 你可以看到帖子里面包含评论,评论里面也包含标签关系。 另外,我在我的项目中使用了“jenssegers/laravel mongodb”包,我试图在没有
我对雄辩的质询有意见。我正在使用渴望加载(一对多多态关系)来排序“historyable”。日期见下文。 我试着得到这样的结果 是否有可能运行嵌套懒惰渴望加载Laravel? 产品型号 历史模型 产品控制器 我有这样的数据库
我尝试从带有多个where和/或子句的表中获得结果。