如何在 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();

&lt;&gt; 运算符也可以使用

官方文档中有很好的描述:https://laravel.com/docs/5.7/queries#where-clauses

【讨论】:

感谢您的帮助,但您的查询不起作用..但最后我使用原始表达式【参考方案2】:

见Laravel Eloquent how to use between operator

要在没有模型的修补程序中进行测试,请尝试

\DB::table('table')-&gt;whereBetween('date_field', ['2018-12-09', '2019-01-01'])-&gt;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 中实现这个查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 关系中实现 SUM()?

如何在 laravel 中实现 vuetify?

如何在 Lumen 6x 中实现默认 Laravel 重置密码

我们如何在 Laravel 中实现自定义的仅 API 身份验证

如何使用 Laravel 在网站中实现 OCR

如何在 Laravel 网站中实现主题选项?