繁体   English   中英

Laravel 中的 whereraw 与 DB::raw

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM