![](/img/trans.png)
[英]Laravel 5.5 Query Builder whereRaw returns no results but raw SQL does
[英]whereraw Vs DB::raw in Laravel
我很困惑,真的不知道我应该如何以及在哪里选择两者中的一个?
我阅读了两者的文档
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')
但是如果你需要写一个完整的“raw where ”,你应该使用whereRaw
(为了你的方便)。 例如:
->whereRaw('DATE(date_column) > DATE(another_date_column)')
此外, whereRaw()
接受完整的 where 子句。
所以,在你的第一个例子中它不起作用,因为你应该这样做:
->whereRaw("date > ".$date)
你的第二个例子可以通过只使用whereRaw()
来简化,就像我的回答中的上述语句一样。
DB::raw()
也可用于->select()
、 groupBy()
等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.