2017-05-27 1 views
0

私は友人のためのシステムですが、ちょっとした問題を偶然見つけました。 私は3つのモデル(customerCard、customerCardComment、customerCardFollowup)を持っています。Laravelの難解な関連クエリ

私が達成しようとしていることを理解するために、下のイメージを参照してください。あなたが見る通り、私は売り上げフィールドが0に等しいcustomerCardモデルを得ようとしていますが、customerCardモデルには型フィールドが1,2または3に等しいcustomerCardCommentモデルがなく、customerCardもcustomerCardFollowupはありません。

データベース: customer_cards customer_card_comments customer_card_followups

コメントやフォローアップテーブルの両方がcustomer_cardsにIDフィールドに関連しています。両方とも外部キーcustomer_card_idを持っています。

このクエリを実行する方法はありますか?または私は失われていますか? ありがとうございます。

enter image description here

+0

画像としてコードを投稿しないでください! – manniL

+0

また、モデルの大雑把なデータ構造、またはすべてのリレーションと属性を見ることができる通常のクエリのJSON出力を提供してください。 – manniL

答えて

1

LaravelのwhereHasは3番目と4番目のパラメータを受け付けます。 3番目のパラメータは結果セットのcountに対する比較演算子であり、4番目の引数は比較対象のnumberです。あなたは、レコードの数が関係から返され、これがあなたの第二の問題を解決しますカウントする->has()を使用することができ、

CustomerCard::where(function($query){ 
    $query->where('sold', 0) 
     ->whereHas('customerCardComment', function($query){ 
      return $query->whereIn('type', [1,2,3]); 
     }, '=', 0); 
}); 

次:

CustomerCard::where(function($query){ 
    $query->where('sold', 0) 
     ->whereHas('customerCardComment', function($query){ 
      return $query->whereIn('type', [1,2,3]); 
     }, '=', 0) 
     ->has('customerCardFollowup', '=', 0); 
}); 

第三1が実際にあるこれは、最初の問題を解決しますもう少し複雑で、もう少しアプローチする方法について考える必要があります。まもなく正しい方向に進み、3番目の問題の解決策を投稿してすぐに編集して更新するように、私は今答えるでしょう。

+0

私は実際に私がこれを知っているので、これは私のために多くの問題を修正しています。関係クエリのwhereHasを使用できるかどうかわかりませんでした。ありがとうございました。 :) – Kaizokupuffball

関連する問題