首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel weekly by eloquent收集错误

Laravel weekly by eloquent收集错误
EN

Stack Overflow用户
提问于 2019-08-22 15:23:55
回答 3查看 359关注 0票数 0

我有订单表,并为每个用户每周付款表。我想告诉用户,他将采取总付款计数取决于星期。我已经创建了查询,但在刀片式服务器端,当我尝试通过eloquent访问其他表时,它给出的查询不存在于此集合中。

如果我不使用group by函数,它就可以工作。但使用group by函数则不能

代码语言:javascript
复制
$earnings = user()->orders()->where('payment_status',0)- 
>where('status',1)->get()->groupBy(function($date) {
        return Carbon::parse($date->created_at)->format('W');
    });

在刀片端,我的代码如下所示;

代码语言:javascript
复制
@foreach($earnings as $earning)
    <tr>
    <td>{{$earning->user->name}}</td>
    <td>{{$earning->order->commission}}</td>
    <td>{{$earning->user->bank}}</td>
    <td>{{$earning->user->iban}}</td>
    <td>{{$earning->user->phone}}</td>
@endforeach
EN

回答 3

Stack Overflow用户

发布于 2019-08-22 15:29:43

get()应该是最后一个:

代码语言:javascript
复制
$earnings = user()->orders()
              ->where('payment_status',0)
              ->where('status',1)
              ->groupBy('created_at')
              ->get();

使用DATE_FORMAT函数如何:

代码语言:javascript
复制
$earnings = user()->orders()
              ->where('payment_status',0)
              ->where('status',1)
              ->groupBy(DB::raw("DATE_FORMAT(created_at, '%W')"))
              ->get();
票数 0
EN

Stack Overflow用户

发布于 2019-08-22 15:43:57

假设您的表是orders,您可以这样做:

代码语言:javascript
复制
$earnings = user()->orders()->select('orders.*', DB::raw("DATE_FORMAT(created_at, '%W') as week"))
    ->where('payment_status',0)
    ->where('status',1)
    ->get()->groupBy('week');
票数 0
EN

Stack Overflow用户

发布于 2019-08-22 17:51:49

Laravel Collection groupBy()函数返回分组集合的集合。

代码语言:javascript
复制
$earningGroups = user()->orders()
    ->where('payment_status',0)
    ->where('status',1)
    ->get()
    ->groupBy(function($earning) {
        return Carbon::parse($earning->created_at)->format('W');
    });

现在这是一个收入组的集合,而不是收入。

代码语言:javascript
复制
@foreach($earningGroups as $earcningGroupName => $earcningGroup)
    // So here you have a group or earnings

    // I don't know why did you want to group.
    // For an example I will print the group name as a table row  here.
    // But do whatever you want.

    <tr>
        <td>{{ $earningGroupName }}</td>
    </tr>

    // So if you want to loop through earnings, you have to loop again.
    @foreach($earningGroup as $earning)
        <tr>
            <td>{{$earning->user->name}}</td>
            <td>{{$earning->order->commission}}</td>
            <td>{{$earning->user->bank}}</td>
            <td>{{$earning->user->iban}}</td>
            <td>{{$earning->user->phone}}</td>
        </tr>
    @endforeach
@endforeach
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57604045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档