2017-01-17 6 views
0

異なるパラメータでフィルタを作成したい。パラメータの1つは$ article_titleです。しかし、それは空にすることができます。私の問題は、たとえ空でない場合でも、return $commentsにnullが入る場合です。私もこのようにしようとしたwhere句で複数のパラメータを使用するにはどうすればよいですか?

$comments = ArticleComments::orderBy($orderBy,'desc') 
      ->with(['user', 'article', 'article.translations' => function($q) use($default_language_id,$article_title) { 

       $q->where([ 
        ['language_id', '=', $default_language_id], 
        ['title', 'like', '%'. $article_title .'%'], 
       ]); 
      }])->paginate(10); 

しかし、私はすべてのコメントを取得

$q->where('language_id', $default_language_id)->where('title','like',$article_title); 

この私の関数である

public function getResultCommentsWithArticle($comment,$user_firstname,$article_title,$orderBy){ 
     $default_language = Languages::where('default',1)->first(); 
     $default_language_id = $default_language->id; 

     $comments = ArticleComments::orderBy($orderBy,'desc') 
      ->with(['user', 'article', 'article.translations' => function($q) use($default_language_id,$article_title) { 
       $q->where('language_id', $default_language_id)->where('title','like',$article_title); 
      }])->paginate(10); 
     return $comments; 
    } 

EDIT:このコードの一部だからですではなく、commentstitle="something"

+1

あなたはあなたの正確な質問を説明してもらえますか?今、私は数値ジェネレータを実装することができ、それは有効な答えになるでしょう:) – Loek

+0

問題は、私がいつでもnullを得ることです - >( 'title'、 'like'、$ article_title);たとえ私がデータベースのタイトルを持っていても、今のところ明らかになっているのは、 – None

+0

ですか? :D – None

答えて

2
$comments = ArticleComments::orderBy($orderBy,'desc') 
      ->with(['user', 'article']) 
      ->whereHas('article.translations', function($q) 
       use($default_language_id,$article_title) { 

       $q->where('language_id', $default_language_id) 
       ->where('title','like',$article_title); 
      })->paginate(10); 
+0

予期しない '=>'(T_DOUBLE_ARROW) – None

+0

私の答えは – Paras

+1

です' - > whereHas'には2つの引数があります。その中の '=>'を削除し、カンマで置き換える必要があります。 Parasがエラーを起こすのはそのためです。 – devk

0

これを試してみてください:

$comments = ArticleComments::orderBy($orderBy, 'desc') 
    ->with(['user', 'article' => function ($q) use($default_language_id, $article_title) { 
     $q->with('translations') 
      ->whereHas('translations', function ($q) use($default_language_id, $article_title) { 
       $q->where('language_id', $default_language_id)->where('title','like',$article_title); 
      }); 
    }])->paginate(); 

これはすべてコメントを選択し、それに translation.title、デフォルトの言語IDと一致する記事を添付します。あなたはコメントの代わりに、あなたがこれを行うと記事フィルタ処理したい場合には

$comments = ArticleComments::orderBy($orderBy, 'desc') 
    ->with(['user', 'article.translation']) 
    ->whereHas('article', function ($q) use($default_language_id, $article_title) { 
     $q->whereHas('translations', function ($q) use($default_language_id, $article_title) { 
       $q->where('language_id', $default_language_id)->where('title','like',$article_title); 
      }); 
    })->paginate(); 

    return $comments; 
+0

は、私はこれを試してみましたが、再び私はすべてのために、すべてのコメントを取得したいように動作している場合 – None

+0

秒1を試してみてくださいで入力した内容の記事、及びません。私は、最初のものは**すべての**コメントを取得すると書いた。 2番目のコメントはコメントをフィルタリングします。申し訳ありませんが、本当に本当に本当にあなたが望むものが分からないので、私は両方を書いています。編集:コードが正しく強調表示されますように、また、あなたの記事では、PHPタグを置くことができます(それはそのようにはるかに読みやすいです)。 – devk

+0

私はOPは、ユーザーとの記事を望んでいるだけの翻訳たぶん – Paras

関連する問題