【问题标题】:Laravel Get all realated models with scopeLaravel 获取所有具有范围的真实模型
【发布时间】:2014-12-05 09:03:13
【问题描述】:

几天来,我一直在试图获得一些我认为应该非常简单的东西,但我无法找到正确的解决方案,

我有以下模型(只是打印重要的方法)

订购
身份证
created_at

订单内容
身份证
order_id

我有一个订单范围

scopeByRange($query,$d1,$d2){
  return $query->whereBetween('created_at',[$d1,$d2])
}

效果很好,我想要的是一个包含来自该 OrderScope 的所有 orderContents 的集合

类似

$orderContents = Order::byRange($d1,$d2)->allOrderContents;

所以我不必做一个 bucle 并合并集合

有办法吗?

【问题讨论】:

标签: php laravel eloquent


【解决方案1】:

感谢@JarekTkaczky 为我指明了正确的方向, 我的最终功能是以下一个,只是对报告进行一些额外的计算

public static function byDateRange($d1,$d2){

    $orderContents = null;
    Order::byDateRange($d1,$d2)->with(['contents' => function($q) use(&$orderContents){
        $orderContents = $q->select('*',
                                DB::raw('sum(quantity) as quantity_sum'),
                                DB::raw('sum(total) as total_sum'))
                            ->groupBy('item_id')
                            ->orderBy('total_sum','DESC')
                            ->get()->unique();
    },'contents.item'])->get();

    return $orderContents;
}

【讨论】:

    猜你喜欢
    • 2016-02-04
    • 2015-06-12
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2020-03-09
    • 2021-12-12
    • 2015-01-20
    相关资源
    最近更新 更多