如何创建基于数据库中现有字段的where
子句,而不是输入参数?
$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查询? Haven在文档或现有帖子中找到了合适的答案。
答案 0 :(得分:0)
你需要使用......
where('column1', '=', DB::raw('column2'));
...使用字段值而不是字符串&#34; column2&#34;。
在this answer我进一步解释了原因。