11

モデルの作成者によって Foo モデルの結果をフィルター処理するクエリ スコープ メソッドがあります。複雑なのは、著者が直接関係していないことです。

Foo は Bar に属し、Bar は User に属します。Foo が User に属している場合、次のようにすることができます。

public function scopeAuthorOnly($query, User $user)
{
    return $query->whereuser_id($user->id);
}

Foo モデルには user_id 列がなく、代わりに bar_id 列があるため、これは明らかに機能しません。ただし、user_id をフィルター処理する方法でクエリを作成する方法がわかりません。

ポインタはありますか?

4

3 に答える 3

6

解決策を見つけました:

public function scopeAuthorOnly($query, User $user)
{
    $query
        ->join('bars', 'foos.bar_id', '=', 'bars.id')
        ->join('users', 'bars.user_id', '=', 'users.id')
        ->where('users.id', '=', $user->id);

    return $query;
}
于 2013-09-03T14:18:01.527 に答える