我很困惑,真的不知道该如何选择在何处使用这两者?
我都阅读了文档
https://laravel.com/docs/5.4/queries#where-clauses
和
https://laravel.com/docs/5.4/queries#raw-expressions
如果我使用类似这样的查询,则无法正常工作
DB::table('table_name')
->where('parent_id', $parent_id)
->whereRaw("date",">",$date)
->get();
但是有效
DB::table('table_name')
->where('parent_id', $parent_id)
->where(DB::raw("date",">",$date))
->get();
最佳答案
DB::raw()
使您可以将原始语句编写为查询的一部分。例如:
->where(DB::raw('DATE(date_column)'), '>', '2017-01-01')
但是,如果您需要编写一个完整的“原始位置”,则应使用
whereRaw
(为方便起见)。例如:->whereRaw('DATE(date_column) > DATE(another_date_column)')
另外,
whereRaw()
接受完整的where子句。因此,在第一个示例中,它不起作用,因为您应该这样做:
->whereRaw("date > ".$date)
第二个示例可以通过仅使用
whereRaw()
来简化,例如我的回答中的上述声明。DB::raw()
也可以在->select()
,groupBy()
和其他代码中使用。关于php - 在Laravel中whereraw与DB::raw,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43110511/