Laravel 5 проблема с wherePivot

Я работаю с Laravel 5 и у меня проблемы с получением->wherePivot() работать над отношениями «многие ко многим». Когда яdd() SQL выглядит так, как будто Eloquent ищет записи в сводной таблице со значением `pose_state` .pose_id` равно null`.

Я надеюсь, что это простая ошибка, а не ошибка. Любые идеи приветствуются.

Структура базы данных

поза

id
name
type

государство

id
name
machine_name

pose_state

pose_id
state_id
status
модели

поза

<?php namespace App;
use DB;
use App\State;
use Illuminate\Database\Eloquent\Model;

class Pose extends Model {

  public function states()
  {
      return $this->belongsToMany('App\State')
                  ->withPivot('status_id')
                  ->withTimestamps();
  }
  public function scopeWithPendingReviews()
  {
      return $this->states()
                  ->wherePivot('status_id',10);
  }
}

государственный

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class State extends Model {

    public function poses()
    {
      return $this->belongsToMany('Pose')
                  ->withPivot('status_id')
                  ->withTimestamps();
    }

}

Функция PosesController

public function listPosesForReview(){
    $poses = Pose::withPendingReviews()->get();
    dd($poses->toArray() );
}

SQL

select 
  `states`.*, `pose_state`.`pose_id` as `pivot_pose_id`,
  `pose_state`.`state_id` as `pivot_state_id`, 
  `pose_state`.`status_id` as `pivot_status_id`, 
  `pose_state`.`created_at` as `pivot_created_at`, 
  `pose_state`.`updated_at` as `pivot_updated_at` 
from 
  `states` inner join `pose_state` on `states`.`id` = `pose_state`.`state_id` 
where 
  `pose_state`.`pose_id` is null and `pose_state`.`status_id` = ?
РЕДАКТИРОВАТЬ

Когда я обновил свой код, чтобы удалить область, это работало. Спасибо @Deefour за то, что поставили меня на правильный путь! Может быть, у сферы есть что-то еще, чего мне не хватает.

public function pendingReviews()
{
  return $this->states()
              ->wherePivot('status_id','=', 10);
}
ЕЩЕ ДРУГОЕ РЕДАКТИРОВАНИЕ

Я наконец получил это, чтобы работать. Решение выше дало мне повторяющиеся записи. Не знаю, почему это работает, но это так, поэтому я буду придерживаться этого.

public function scopeWithStatusCode($query, $tag)
{
  $query->with(['states' => function($q) use ($tag)
            {
              $q->wherePivot('status_id','=', $tag);
            }])
        ->whereHas('states',function($q) use ($tag)
            {
              $q->where('status_id', $tag);
            });
}

Ответы на вопрос(3)

Ваш ответ на вопрос