The positions method should return $this->hasManyThrough() instead of $this->belongsToMany().
positions
$this->hasManyThrough()
$this->belongsToMany()