如何在 laravel 中实现这个查询?
Posted
技术标签:
【中文标题】如何在 laravel 中实现这个查询?【英文标题】:How to implement this query in laravel? 【发布时间】:2019-05-10 12:11:12 【问题描述】:select *
from tr_sewaiklan
where '2018-12-09' BETWEEN tgl_mulai AND tgl_selesai
【问题讨论】:
你应该添加你的模型的代码和你迄今为止尝试过的代码。 ***.com/questions/26746918/… 不,伙计,因为 whereBetween 格式是 field_date 然后是数组值,但在我的查询格式是 value_date 然后是 field_date... 【参考方案1】:DB::tabe('tr_swaiklan')->where('2018-12-09', '>', $tgl_mulai)->where('2018-12-09', '<', $tgl_selesai)->get();
<>
运算符也可以使用
官方文档中有很好的描述:https://laravel.com/docs/5.7/queries#where-clauses
【讨论】:
感谢您的帮助,但您的查询不起作用..但最后我使用原始表达式【参考方案2】:见Laravel Eloquent how to use between operator
要在没有模型的修补程序中进行测试,请尝试
\DB::table('table')->whereBetween('date_field', ['2018-12-09', '2019-01-01'])->get();
来自评论
DB::table('tr_sewaiklan')->where(function ($query)
$query
->where('tgl_mulai', '<', '2018-12-09')
->where('tgl_selesai', '>', '2018-12-09');
);
【讨论】:
不,伙计,因为 whereBetween 格式是 field_date 然后是数组值,但在我的查询格式是 value_date 然后 field_date... 对不起,误读了你的问题,我的错。如果您想要替代原始查询,您可以使用 where 闭包,例如 DB::table('tr_sewiklan')->where(function ($query) $query ->where('tgl_mulai', 'where('tgl_selesai', '>', '2018-12-09'); );如果你的日期真的是一个变量,你use ()
它在闭包中【参考方案3】:
最后我用原始表达式而不是 eloquent 解决了我的问题,因为 whereBetween 格式是 field_date 然后是 value_date 但在我的情况下,我的查询格式是 value_date 然后是 field_date。
谢谢你们的帮助..
DB::select(DB::raw("SELECT a.* FROM tr_sewaiklan a LEFT JOIN tb_iklanposisi b ON a.id_posisi=b.id WHERE '".date('Y-m-d')."' BETWEEN tgl_mulai AND tgl_selesai"));
【讨论】:
date('Y-m-d')
- 为什么不直接使用CURDATE()?以上是关于如何在 laravel 中实现这个查询?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Lumen 6x 中实现默认 Laravel 重置密码