php - 在Laravel中whereraw与DB::raw

标签 php laravel laravel-5

我很困惑,真的不知道该如何选择在何处使用这两者?

我都阅读了文档

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/

相关文章:

php - 尝试在 null 上读取属性 "name"

javascript - SyntaxError : Unexpected token/. .. Blueimp jQuery 文件上传

laravel - Laravel 中的 Job、Queue 和 Worker 有什么区别?

php - 如何在 Laravel Controller 中使用方法重载?

javascript - 使用 select2 on edit 在输入中显示选定的多个选定项目

php - 使用 phpmyadmin 手动输入数据库时​​是否可以对密码进行哈希处理?

javascript - JSON 对象到 JavaScript 数组的转换

javascript - ekko-lightbox 和从 PHP 脚本返回为 BLOB 的图像

php - Laravel 创建具有多重选择的条目

php - 随机洗牌而不会再次得到相同的结果