我正在尝试通过嵌套函数访问父值(发布日期)。
在我的应用程序中,一个用户有很多帖子,每个帖子都与一个产品(课本)相关联。每次有人浏览带有该产品的页面时,都会在product-views表中添加一个新行。
我想返回查看用户产品的累计次数。我已经能够获得所有用户的帖子,然后是相关产品,然后是该产品的所有视图计数。
现在,我想添加另一个where()条件,以仅返回创建帖子后发生的视图。为此,我需要获取发布日期,例如views-> product-> post,同时构建类似于user-> posts-> product-> views的查询。
// getting all of the users available posts
$user = $request->user()->posts()->available()->with([
// with the textbook (product) associated with the post
'textbook' => function ($q) {
// get the count of textbook-page views
return $q->withCount([
// from the related table views
'views' => function ($q) {
// ===!!! Q !!!=== How do I access the posts (parent (grandparent?)) date, so that I only select the rows that have been viewed after the post was created ===!!!===
->where('date-viewed', '>=', 'posts.date');
},
]);
//some cleanup
}])->distinct()->get()->unique('isbn')->pluck('textbook.views_count')->sum();
如何在嵌套函数中向后访问帖子日期?
答案 0 :(得分:0)
就像乔纳斯(Jonas)在评论中说的那样,每个with()
关系都是一个新查询,因此我最终通过产品在帖子和视图之间创建了hasManyThrough()
关系。
// getting all of the users available posts
$user = $request->user()->posts()->available()->withCount([
'views' => function ($q) {
// ===!!! A !!!=== Fixed ===!!!===
->whereRaw('`date-viewed` >= posts.date');
},
])->distinct()->get()->unique('isbn')->pluck('views_count')->sum();