2016-08-01 5 views
0

私はクエリで結合する必要があるテーブルのスケジュールを持っています。クエリ操作の配列のCakephpと制約

$joins[] = array(
    'table' => 'schedules', 
    'alias' => 'Schedule', 
    'conditions' => array(
     'Schedule.provider_id = Provider.id', 
     'Schedule.endtime > "' . date('Y-m-d H:i:s') . '"', 
     'Schedule.starttime' => $startTimes, 
    ), 
    'type' => 'INNER' 
); 

$starttimesは、DateTimeオブジェクトで構成される配列です。 プロバイダーは複数のスケジュールを持つことができ、少なくとも$starttimes配列のすべての開始時刻に一致するすべてのプロバイダーを取得したいと考えています。

+2

私の質問は_why_?あなたの 'starttime'カラムは値の1つしか持つことができないので、複数の' AND'を使うことは決して(すべての日付が同じでない限り)決して一致しません。 – ndm

+0

多分、私はそれを私の質問でもっと明確にしておかなければなりません。間違ったmysqlの文章は間違いです。 すべてのプロバイダは、スケジュールテーブルに複数の行を持ち、 '$ starttimes'配列に少なくとも常にある行を持つすべてのプロバイダを取得したいとします。 – Max90

+0

これはまったく違うものです。これらの詳細と[**あなたの質問を更新**](http://stackoverflow.com/posts/38694268/edit)し、見た目がわかれば適切なサンプルSQLを追加してください。それ以外の場合は現在のSQLを削除してください。 – ndm

答えて

0

ndmのおかげで私は解決策を得ました。私が見逃していたのは、グループの口数だった:

$group = 'Provider.id HAVING COUNT(DISTINCT Schedule.id) = ' . count($startTimes);