0
私はcakephpプロジェクトを作成しました。私はPHP開発の初心者です。私はそれが本当に複雑なので、私はケーキでそれを実行することはできませんSQLクエリを持っています。cakephpのsqlクエリ
私のクエリは次のとおりです。
select * from schedules as s left join flight_plans as f on s.flight_plan_id = f.id
left join drones as d on d.id = s.drone_ref
where
d.uid = "xxx" and
is_approved = 1 and
is_confirmed = 1 and
is_finalized = 1 and
DATE_FORMAT(s.start_timestamp, '%Y-%m-%d') <= DATE_FORMAT(NOW(), '%Y-%m-%d') and
DATE_FORMAT(NOW(), '%H:%i:%s') >= DATE_FORMAT(DATE_SUB(start_timestamp,INTERVAL 1 HOUR) , '%H:%i:%s')and DATE_FORMAT(NOW(), '%H:%i:%s') <= DATE_FORMAT(s.start_timestamp, '%H:%i:%s') and ((
s.type = 0 and
DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(s.start_timestamp, '%Y-%m-%d') and s.end_timestamp)
or (
s.end_timestamp IS NULL and
s.type = 1 and
(DAYOFWEEK(NOW()) = s.monday or
DAYOFWEEK(NOW()) = s.tuesday or
DAYOFWEEK(NOW()) = s.wednesday or
DAYOFWEEK(NOW()) = s.thursday or
DAYOFWEEK(NOW()) = s.friday or
DAYOFWEEK(NOW()) = s.saturday or
DAYOFWEEK(NOW()) = s.sunday)))
order by DATE_FORMAT(s.start_timestamp, '%H:%i:%s') , s.type
私は2つの方法
最初のように試してみました:それらの両方がnullを返す
$results = $connection->execute('select * from schedules as s left join flight_plans as f on s.flight_plan_id = f.id left join drones as d on d.id = s.drone_ref
where d.uid = "xxx" and is_approved = 1 and is_confirmed = 1 and is_finalized = 1 and
DATE_FORMAT(s.start_timestamp, \'%Y-%m-%d\') <= DATE_FORMAT(NOW(), \'%Y-%m-%d\') and
DATE_FORMAT(NOW(), \'%H:%i:%s\') >= DATE_FORMAT(DATE_SUB(start_timestamp,INTERVAL 1 HOUR) , \'%H:%i:%s\')and DATE_FORMAT(NOW(), \'%H:%i:%s\') <= DATE_FORMAT(s.start_timestamp, \'%H:%i:%s\') and ((
s.type = 0 and
DATE_FORMAT(NOW(), \'%Y-%m-%d\') BETWEEN DATE_FORMAT(s.start_timestamp, \'%Y-%m-%d\') and s.end_timestamp)
or (
s.end_timestamp IS NULL and
s.type = 1 and
(DAYOFWEEK(NOW()) = s.monday or
DAYOFWEEK(NOW()) = s.tuesday or
DAYOFWEEK(NOW()) = s.wednesday or
DAYOFWEEK(NOW()) = s.thursday or
DAYOFWEEK(NOW()) = s.friday or
DAYOFWEEK(NOW()) = s.saturday or
DAYOFWEEK(NOW()) = s.sunday)))
order by DATE_FORMAT(s.start_timestamp, \'%H:%i:%s\') , s.type')->fetchAll('assoc');
:
$uid = $this->request->data['uid'];
$options['joins'] = array(
array('table' => 'Drones',
'alias' => 'd',
'type' => 'LEFT',
'conditions' => array(
'Drones.id = Schedules.drone_ref',
)
),
array('table' => 'FlightPlans',
'alias' => 'f',
'type' => 'LEFT',
'conditions' => array(
'FlightPlans.id = Schedules.flight_plan_id',
)
)
);
$options['conditions'] = array(
'AND' => array(
array('Schedules.drone_ref' => $uid),
array('Schedules.is_approved' => 1),
array('Schedules.is_confirmed' => 1),
array('Schedules.is_finalized' => 1),
array('DATE_FORMAT(Schedules.start_timestamp, \'%Y-%m-%d\') <= ' => 'DATE_FORMAT(NOW(), \'%Y-%m-%d\')'),
array('DATE_FORMAT(NOW(), \'%H:%i:%s\') >=' => 'DATE_FORMAT(DATE_SUB(Schedules.start_timestamp,INTERVAL 1 HOUR) , \'%H:%i:%s\')'),
array('DATE_FORMAT(NOW(), \'%H:%i:%s\') <=' => 'DATE_FORMAT(Schedules.start_timestamp, \'%H:%i:%s\')')
),
'AND' => array(
array(
'OR' => array(
'AND' => array(
array('Schedules.type' => 0),
array('DATE_FORMAT(NOW(), \'%Y-%m-%d\') <=' => 'DATE_FORMAT(Schedules.end_timestamp, \'%Y-%m-%d\')')
),
'AND' => array(
array('Schedules.type' => 1),
array('Schedules.end_timestamp' => null),
'OR' => array(
array('DAYOFWEEK(NOW())' => 'Schedules.monday'),
array('DAYOFWEEK(NOW())' => 'Schedules.tuesday'),
array('DAYOFWEEK(NOW())' => 'Schedules.wednesday'),
array('DAYOFWEEK(NOW())' => 'Schedules.thursday'),
array('DAYOFWEEK(NOW())' => 'Schedules.friday'),
array('DAYOFWEEK(NOW())' => 'Schedules.saturday'),
array('DAYOFWEEK(NOW())' => 'Schedules.sunday')
)
)
)
)
));
$results = $this->Schedules->find('all', $options);
と第二値、一方、whe n私はphpmy adminで同じSQLクエリを実行します。私は他の結果を得ました!
助けてください!
仕事はありません。私の答えの更新をチェックしてください! –