我正在尝试让用户投票,而我的查询就是这个
$game = Games::where('slug', $slug)->where('id', $id)->with('votes')->first();
游戏模型
public function votes() {
return $this->hasMany('App\Models\Votes');
}
$ game->投票
[
{
id: 2,
games_id: 2,
users_id: 3,
vote: 1
},
{
id: 6,
games_id: 2,
users_id: 4,
vote: 0
},
{
id: 7,
games_id: 2,
users_id: 5,
vote: 1
},
{
id: 8,
games_id: 2,
users_id: 6,
vote: 1
},
{
id: 9,
games_id: 2,
users_id: 1,
vote: 1
}
]

有这个数据
我将计算这些投票数据和 当我预先知道这个数据时
foreach($game->votes as $val) {
return $val;
}
我只有一个索引
{
id: 2,
games_id: 2,
users_id: 3,
vote: 1
}

在此查询或循环中,我有什么问题吗?
答案 0 :(得分:2)
您应该直接从数据库中获得总票数:
$count = Vote::whereHas('game', function ($query) use ($id, $slug) {
$query->where(compact('id', 'slug'));
})->count();
不需要任何循环。
答案 1 :(得分:0)
是的,你的循环有问题。 :)这是你现在的循环:
foreach($game->votes as $val) {
return $val;
}
return
语句会立即结束您的函数的执行,因此当您这样做时,您将在第一次循环后有效地结束循环。您可以在循环内部执行echo
数据。但是,return
语句将完成该功能。