driver-> hasManyの(dpsObject) driver-> belongsToの(指定)
指定 - > hasManyの(ドライバー)
dpsObject-> belongsToの(ドライバー)
私は3つのユーザ入力の値に対応dpsObjectレコードのリストを返すようにクエリを記述しようとしている:日付範囲(FromとTo)を保持するdpsObject内のEntryDateフィールドの値と、DesignationオブジェクトのDesignation_nameフィールドの値を保持するDesignation入力とを含む。 は現在、これが私のクエリです:
$dps = dpsObject::where([['entryDate', '>=', $from],
['entryDate', '<=', $to]]);
から$と$のは、提出フォームのユーザーから得要求値を保持します。 dpsObjectレコードを持つドライバの指定名を取得するために、クエリを完了する必要があります。課題は、dpsObjectモデルには存在しませんが、ドライバおよび指定モデルのみに存在します。これは、データベースモデルを維持する方法です。私はジョイントなどを使用する必要があると思いますが、どうやってそれをどうやって行くのかはわかりません。
このようなクエリを作成する最良の方法は何ですか?
種類は、あなたがネストされたwhereHas()
を使用することができます
@Alexyこれは私が得ているエラーです。 SQLSTATE [HY000]:一般的なエラー:1267操作 '='のための照合(utf8mb4_general_ci、IMPLICIT)および(utf8mb4_unicode_ci、IMPLICIT)の照合ミックスが不正です(SQL:select * from 'dps_objects'ここで、' entryDate'は2017-07-01と2017-07-01にあり、 'dps_objects'.driver_no' =' drivers'.driver_no'で存在するもの(select * from 'designations'は' drivers'.designation_name' = '指定'.'designation_name'と' designation_name' = Total))) これは関係の設定方法と関係がありますか? – MGS