0

特定のユーザーの時間の重複を見つけようとしています。私のロジックはすべてのラップをキャッチすると思いますが、これは開始または終了が時間枠の間にある場合にのみキャッチされますが、開始と終了の両方が間にある場合は何も見つかりませんいくつかの記録期間!

 $tempModel = clone $this; // clone model

 $criteria->addCondition('
      ( t.user = :user AND (t.startDate >= :start AND t.startDate <= :end ))
      OR
      ( t.user = :user AND (t.endDate >= :start AND t.endDate <= :end ))
  ');
  $criteria->params = array(
        ':start' => date('Y-m-d', strtotime($tempModel->startDate)),
        ':end' => date('Y-m-d', strtotime($tempModel->endDate)),
        ':user ' => $tempModel->userID ,
    );

 if(!empty($tempModel->idUserTime)) // dont find updated record
            $criteria->addCondition('t.idUserTime != ' . $tempModel->idUserTime);

 $criteria->addCondition('t.active = 1'); // if this is an active user time

 $hasRecord = Usertime::model()->findAll($criteria);

問題はどこだ?

4

1 に答える 1