mysql 쿼리가 결과를 반환하지 않는 이유를 알 수 없습니다. 다음은 여기에 있습니다. 사용자가 아닌 사용자에 대한 결과를 반환하려고합니다. 기간 동안 사용할 수 없습니다. 그래서 테이블 가용성을 사용할 수 없으며 datetime을 시작하고 사용자가 외래 키를 사용하여 datetime을 끝낼 수 없습니다. 이제 테스트를 위해 선택한 날짜 시간이 있습니다.Mysql/Laravel false를 반환하는 쿼리가 true를 반환하는 쿼리
selected string(19) "2014-11-13 10:30:00"
unavailableStart string(19) "2014-11-12 11:30:00"
unavailableEnd string(19) "2014-11-18 11:00:00"
$undateS > $selected_date_time : result = bool(false)
$undateE > $selected_date_time : result = bool(true) ==> two above && return false
$undateS < $selected_date_time : result = bool(true)
$undateE < $selected_date_time : result = bool(false) ==> two above && return false
: 여기
User::whereHas('availabilities', function($q)use($selected_date_time)
{
$q->where('unavailable_start_date', '>', $selected_date_time)
->where('unavailable_end_date', '>', $selected_date_time)
;
})
->orWhereHas('availabilities', function($q)use($selected_date_time)
{
$q->where('unavailable_start_date', '<', $selected_date_time)
->where('unavailable_end_date', '<', $selected_date_time)
;
})
->with('availabilities')
->get();
이 경우 쿼리에 잘못된 테스트하거나 문제를보고 돌려 사용자가 수동으로 만든 논리적 테스트의 결과입니다 : 여기
쿼리입니다
OR 테스트에서 FALSE가 반환됩니다. 즉,이 사용자는 결과에 나타나서는 안됩니다 ... 이상하게도 다른 사용자도 일정 기간 동안 사용할 수 없도록 설정되어 있고 결과로 돌아온다 .....
내가 뭘 잘못 했니?
편집 SQL이 실행 : 당신의 도움에 대한
select * from `users` where `is_user` = ? and (select count(*) from `availabilities` where `availabilities`.`user_id` = `users`.`id` and `unavailable_start_date` > ? and `unavailable_end_date` > ?) >= 1 or (select count(*) from `availabilities` where `availabilities`.`user_id` = `users`.`id` and `unavailable_start_date` < ? and `unavailable_end_date` < ?) >= 1
감사합니다!
URL : http://stackoverflow.com/a/26886515/784588 –