2017-09-12 21 views
0

私は自分のアプリでユーザーと記事のモデルを持っています。それらの間の関係は単純である:Laravel 5、雄弁なモデルのための関係を取得

//article.php 
use Taggable; 

public function user() 
{ 
    return $this->belongsTo('App\User'); 
} 

条条:: withAnyTags(「XYZ」という文字列でタグ付けされたすべての記事を返す)のような様々な方法で私を提供してタグ付けできるのlibを使用しています。今、記事を投稿したすべてのユーザーに「xyz」というタグが付いているようにしたいと思います。私は2行でこれを行う方法を知っていますが、何かは、これが正しいとは言えません。理想的には、私はsthのようにしたいと思います:

$users = Article::withAnyTags('xyz')->with('user')->select('user'); --pseudocode 

雄弁にこれを行うことは可能ですか?

サイドノート:私はDB :: tableでこれを行うことができると結論づけましたが、これは私の選択肢ではありません。私の擬似コードの最後には " - > get()"はありません。それは本当です。私は雄弁なクエリだけで動作するlibを使ってユーザの結果セットを改ページしているからです。

答えて

2

あなたはwhereHas()を使用することができます。

User::whereHas('articles', function ($query) { 
    $query->withAnyTags('xyz'); 

})->paginate(); 

それとも、あなたができる閉鎖にタグの変数を渡す必要がある場合:

$tag = 'xyz'; 

User::whereHas('articles', function ($query) use($tag) { 
    $query->withAnyTags($tag); 

})->paginate(); 

は、この情報がお役に立てば幸い!

関連する問題