Laravel 5.3获得belongsToMany和count pivot

时间:2016-12-12 09:08:14

标签: php laravel eloquent pivot-table has-many

我有下一个型号:

class Polling extends Model
{
    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function participants()
    {
        return $this->belongsToMany(Participant::class, 'participant_poll', 'poll_id');
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function results()
    {
        return $this->belongsToMany(Participant::class, 'poll_results', 'poll_id');
    }
}

class Participant extends Model
{
    public function polls()
    {
        return $this->belongsToMany(Polling::class);
    }

    public function results()
    {
        return $this->belongsToMany(Polling::class);
    }

}

poll_results - 数据透视表具有结构:id,poll_id,participant_id。 我需要查看下表:

№|participant.name|Count vote|
1|Mike            |15        |
2|................|10        |
..............................

计票投票获取数据透视表 poll_results。 请帮忙,写一下查询。

$poll = Polling::first();
$poll->participants()->get();

1 个答案:

答案 0 :(得分:0)

您可能希望使用withCount()方法。

  

如果您想要计算关系中的结果数而不实际加载它们,您可以使用withCount方法,该方法会在生成的模型上放置{relation} _count列

您的查询将如下所示:

Participant::withCount('polls')->get();

这会将新属性添加到名为polls_count

的结果中