【发布时间】:2015-02-26 20:40:15
【问题描述】:
如何根据数据库中的现有字段而不是输入参数创建whereclause?
$query = DB::table('events')
->join('events_dates', function($join) use ($data){
$join->on('events.id', '=', 'events_dates.event_id');
$join->where('events_dates.start_date', "<=", $data['date_end']);
$join->where('events_dates.end_date', '>=', $data['date_start']);
});
这很有效,因为 where 子句基于输入参数。
我需要的是一个基于数据库中已有字段的 Where 子句:
类似这样的:
$query = DB::table('events')
->join('events_dates', function($join) use ($data){
$join->on('events.id', '=', 'events_dates.event_id');
//If db field of record: recurrent == 0 then
$join->where('events_dates.start_date', "<=", $data['date_end']);
$join->where('events_dates.end_date', '>=', $data['date_start']);
/* If db field of record: "recurrent" == "1" then
$join->where //another query
*/
});
这可以通过 laravel ORM 实现吗,还是我应该编写一个原生 SQL 查询?
在文档或现有帖子中没有找到合适的答案。
【问题讨论】:
标签: php mysql laravel laravel-4 orm