提问人:SamWalker 提问时间:11/14/2023 更新时间:11/14/2023 访问量:36
获取当月内的所有日期 CakePHP 4 查询生成器
Get all dates within a current month CakePHP 4 Query Builder
问:
尝试使用 CakePHP 4 Query Builder 获取给定月份内的所有日期。 以下原始查询有效,并获取正确的日期。日期以 Y-m-d 格式存储
$connection = ConnectionManager::get('default');
$exams = $connection->execute('SELECT * FROM ielts_exam_dates WHERE MONTH(date_of_exam) = MONTH(CURRENT_DATE);')
->fetchAll('assoc');
而以下和大多数变体不起作用,只返回一个空集。没有错误,只是没有找到任何日期。 我想我也尝试过日期格式。
$venues = $this->IeltsVenues->find()
->contain([
'Venues',
'Venues' => [
'VenueAddresses',
'VenueDetails'
],
'IeltsExamDates' => function (Query $q) use ($moduleId) {
return $q->where(['AND' => [
'ielts_module_type_id' => $moduleId,
'MONTH(date_of_exam)' => 'MONTH(CURRENT_DATE)',
]])
->contain(['IeltsModuleTypes', 'IeltsExamTypes']);
}
])
->where(['ielts_city_id' => $cityId]);
虽然我可以做原始连接和 sql,但很高兴看到这是否可以使用查询构建器。 我浏览了文档,没有看到类似的东西。 任何帮助将不胜感激
答:
0赞
SamWalker
11/14/2023
#1
在官方 CakePHP Discord 上从其他人那里得到了答案,但一旦参数化,情况就是这样。End 函数用于日历,否则它的 'CURRENT_DATE' 其中 ':exam_date' 是。
'IeltsExamDates' => function (Query $q) use ($moduleId, $date) {
return $q->where(['AND' => [
'ielts_module_type_id' => $moduleId,
'MONTH(date_of_exam) = MONTH(:exam_date)',
]])->bind(':exam_date', $date, 'date')
->contain(['IeltsModuleTypes', 'IeltsExamTypes']);
上一个:如何在选择之前添加更新
评论