如何获得特定 post 类型的总星数
How to get total star of a particular post type
我有不同的 post 类型供用户 post 查看,例如:-
Post 类型:-
- 汽车
- 电视
用户 1:- 在 post 类型的汽车下写了评论并给它 5 星。
用户 2:- 也在相同的 post 类型下写了一篇评论,给出了 3 星等
用户 3:- 在 Tv 下写评论并给 star 3 etc
我喜欢获取 post 类型汽车的平均星数并显示在 post 类型汽车下以及电视的平均星数并显示在电视下。有谁知道如何获得正确的总星数?任何建议都会有所帮助
我尝试通过获取所有 post 类型下的 posts 然后循环获取星级,但它似乎返回所有总星数而不是获取总星数在每个 post 类型下,如果有意义的话
$getposttypes = Posttype::Join('categories','posttypes.category_id','=','categories.id')
->select('posttypes.id','posttypes.name','posttypes.slug','categories.name as categoryname','posttypes.created_at','posttypes.updated_at')->get();
foreach ($getposttypes as $key) {
$posts []=Post::Where('posttype_id',$key['id'])->get();
foreach ($posts as $postkey) {
foreach ($postkey as $keyval) {
if($keyval['posttype_id'] ==$key['id']){
$poststars [] = $keyval['rating'];
}
}
}
}
这是可能对您有帮助的查询。
根据您的解释假设。 "Posttype" 包含 "Cars" & "TV"。
& "Post" 包含所有评分。
在 Posttype 模型中创建 post 函数
function post() {
return $this->hasMany(Post::class, 'posttype_id', 'id');
}
& 编写此查询以获得每个 post 类型的平均结果。
$post_types = Posttype::with(['post' => function($query){
$query->avg('rating');
}])->get();
如果您发现此解决方案有任何问题,请告诉我。
我有不同的 post 类型供用户 post 查看,例如:-
Post 类型:-
- 汽车
- 电视
用户 1:- 在 post 类型的汽车下写了评论并给它 5 星。
用户 2:- 也在相同的 post 类型下写了一篇评论,给出了 3 星等
用户 3:- 在 Tv 下写评论并给 star 3 etc
我喜欢获取 post 类型汽车的平均星数并显示在 post 类型汽车下以及电视的平均星数并显示在电视下。有谁知道如何获得正确的总星数?任何建议都会有所帮助
我尝试通过获取所有 post 类型下的 posts 然后循环获取星级,但它似乎返回所有总星数而不是获取总星数在每个 post 类型下,如果有意义的话
$getposttypes = Posttype::Join('categories','posttypes.category_id','=','categories.id')
->select('posttypes.id','posttypes.name','posttypes.slug','categories.name as categoryname','posttypes.created_at','posttypes.updated_at')->get();
foreach ($getposttypes as $key) {
$posts []=Post::Where('posttype_id',$key['id'])->get();
foreach ($posts as $postkey) {
foreach ($postkey as $keyval) {
if($keyval['posttype_id'] ==$key['id']){
$poststars [] = $keyval['rating'];
}
}
}
}
这是可能对您有帮助的查询。
根据您的解释假设。 "Posttype" 包含 "Cars" & "TV"。 & "Post" 包含所有评分。
在 Posttype 模型中创建 post 函数
function post() {
return $this->hasMany(Post::class, 'posttype_id', 'id');
}
& 编写此查询以获得每个 post 类型的平均结果。
$post_types = Posttype::with(['post' => function($query){
$query->avg('rating');
}])->get();
如果您发现此解决方案有任何问题,请告诉我。