Laravel:基于db字段的条件

时间:2014-12-30 17:09:47

标签: php mysql laravel laravel-4 orm

如何创建基于数据库中现有字段的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在文档或现有帖子中找到了合适的答案。

1 个答案:

答案 0 :(得分:0)

你需要使用......

where('column1', '=', DB::raw('column2'));

...使用字段值而不是字符串&#34; column2&#34;。

this answer我进一步解释了原因。