关系的差异

时间:2018-01-04 14:12:54

标签: php laravel laravel-5 eloquent

我有三个表:

  • 用户
  • 的实现
  • realization_user

用户模型:

public function realizations()
{
    return $this->belongsToMany(Realization::class)->withPivot('status', 'payment');
}

实现模型:

public function users()
{
    return $this->belongsToMany(User::class)->withTimestamps()->withPivot('status', 'payment');
}

记录用户只附加到一个实现,当我想显示他的实现数量时,我会这样:

$user->realizations->count()

我得到结果:1,但是当我这样做时:

$user->with('realizations')->count()

我得到13。

有什么问题?以及如何添加例如。关于这种关系在哪里?

1 个答案:

答案 0 :(得分:2)

在第一种情况下,您将获得用户实现的数量,但在第二种情况下,您将获得用户数量。

要获得实现计数,您可以使用:

$user->realizations()->count()

或者如果您还需要实现,您可以使用:

$user->realizations->count()

请记住,您选择的是哪个区别。如果对于用户您有1百万个实现,第一个将对数据库执行查询以仅获得实现的计数,第二个将从数据库中获取所有实现,然后计算它们的数量。