我有这段代码来选择日期在$ date_to_search_string中的所有记录 这只是一个带逗号分隔字符串的变量。
客户希望在我的查询应该是现在的日期上添加时间 IN('03 /二千○十四分之一%”, '2014年3月2日%',等等。) 我如何用propel实现这种查询?(新手推进用户)。
我总是可以这样做:
WHERE initial_interview_date LIKE '03/1/2014%' OR
initial_final_date LIKE '03/12014%' OR
initial_interview_date LIKE '03/2/2014%' OR
initial_final_date LIKE '03/2/2014%' OR
etc..
但要做我想做的事情可能有点矫枉过正, 也许还有别的办法。
代码:
$date_to_search_string = implode(",",$date_to_search);
/* $date_to_search_string:
string ''03/1/2014','03/2/2014','03/3/2014','03/4/2014','03/5/2014'...
***/
$events = ApplicantDetailsQuery::create()
->where("initial_interview_date IN (".$date_to_search_string.") OR final_interview_date IN (".$date_to_search_string.")")
->find();
$events_ii = array();
$events_fi = array();
foreach($events as $event) {
$events_ii[$event->getInitialInterviewDate()][] = $event;
$events_fi[$event->getFinalInterviewDate()][] = $event;
}
答案 0 :(得分:1)
您可以使用SQL DATE命令并保持代码相同。
例如:
WHERE DATE(initial_interview_date) IN ('03/1/2014', '03/2/2014') OR
DATE(initial_final_date) IN ('03/1/2014', '03/2/2014') OR
在Propel中:
$events = ApplicantDetailsQuery::create()
->where("DATE(initial_interview_date) IN ?", $arrayOfDates)
->orwhere("DATE(final_interview_date) IN ?", $arrayOfDates)
->find();