Laravel foreach返回signle索引

时间:2015-11-18 22:07:51

标签: php laravel foreach eloquent

我正在尝试让用户投票,而我的查询就是这个

$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
}




在此查询或循环中,我有什么问题吗?

2 个答案:

答案 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语句将完成该功能。