laravel orm where条件查询怎么写?

如代码所示,如果只是没有pay_time的话,数据正常取出,但是加了pay_time大于的判断就没有数据了,肯定是写法不对,请问这种情况下,要怎么写?
$where['pay_time'] = array('gt',"2017-11-03");
$where['shop_id'] = $shop_id;
$where['pay_status'] = 1;
$orders = order::where($where)->orderBy('order_id', 'desc')->orderBy('pay_time', 'desc')->paginate(50);

阅读 10k
3 个回答

你使用 PHPStorm IDE 追踪 where() 方法的源码实现,会发现在 Laravel 内部 Query\Builder.php 比较条件是通过 = > < 等符号来做条件判断的,而不是像 TP 一样有 lt gt 的用法。把你的 gt 换为 >,语句这样写:


$orders = order::where([
    ['pay_time', '>', '2017-11-03'],
    ['shop_id', $shop_id],
    ['pay_status', 1]
])->orderBy('order_id', 'desc')->orderBy('pay_time', 'desc')->paginate(50);

$where = [
    ['shop_id', '=', $shop_id],
    ['pay_status', '=', 1],
    ['pay_time', '>', '2017-11-03'],
];

where('shop_id',$shop_id)->where('pay_status',1)->where('pay_time','>','2017-11-03')

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题