【问题标题】:Query Data Between Two Date from Date column in Laravel从 Laravel 中的日期列查询两个日期之间的数据
【发布时间】:2020-01-01 17:33:49
【问题描述】:

我正在尝试从我的日期列中查询两个日期之间的数据。 我用api测试过

http://127.0.0.1:8000/api/expense?start=2019-08-01&2019-08-04

但它给了我所有不是日期范围的记录?

My Controller

公共功能索引(请求 $request) { $user = auth()->user(); $expenses = Expense::whereHas('user', function($subQuery) use($user){ return $subQuery->where('shop_id', '=', $user->shop_id); })->with(['user'])->get(); if($request->start && $request->end) { $expenses->where(function($q) use ($request) { $q->whereBetween('date', array($request->start, $request->end)); }); } 返回 ExpenseResource::collection($expenses); }

我认为我的控制器有问题,但我仍然无法弄清楚..

提前致谢...

【问题讨论】:

  • 收到此错误"explode() expects parameter 2 to be string, object given"
  • 你在哪里使用了 explode() 函数?
  • 就像你在我的控制器中看到的那样,我没有使用它..
  • @SandeepSudhakaran 没关系,兄弟现在我解决了。

标签: laravel vue.js


【解决方案1】:

希望这个答案对你有帮助

public function index(Request $request)
{

    $user = auth()->user(); 

    $expenses = Expense::whereHas('user', function($subQuery) use($user){
        return $subQuery->where('shop_id', '=', $user->shop_id);
    })->with(['user']);

    if($request->start && $request->end) {
        $expenses->whereBetween('date', array($request->start, $request->end));
    }        
    return ExpenseResource::collection($expenses->get());

}

你所做的是你先get() 结果然后你应用whereBetween()。 相反,我先申请了whereBetween(),然后如果您的if 条件满足get()

并将您的网址更改为 127.0.0.1:8000/api/expense?start=2019-08-01&end=2019-08-04

【讨论】:

  • 突然又报错Call to undefined method Illuminate\Database\Eloquent\Builder::mapInto()
  • 对答案进行了一些编辑。在if 子句中。请也试试这个
  • 好的。对答案又做了一个改动。 return ExpenseResource::collection($expenses->get());
  • 谢谢哥们。快乐编码
【解决方案2】:

试试这样的

$users = User::select("users.*")

            ->whereBetween('created', ['2018-02-01', '2018-02-10'])

            ->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 2014-12-28
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2018-07-25
    • 2021-12-08
    相关资源
    最近更新 更多