【问题标题】:Laravel return collection with relation and with calculationLaravel 返回具有关系和计算的集合
【发布时间】:2017-09-30 04:59:38
【问题描述】:

我有一个 laravel 应用程序,它有一个模型客户端。

一个客户有很多地址、很多工作和很多交易。

我的客户端模型有以下关系:

public function jobs()
    {
        return $this->hasMany('App\Job','client_id');
    }

public function addresses()
    {
        return $this->hasMany('App\Address','client_id');
    }

public function Fees()
    {
        return $this->hasMany('App\Transaction','client_id');
    }

然后我在该模型上有另一个计算值的函数

public function balance() 
    {
        return $this->Fees()->where('status',2)->sum('gross');
    }

我正在尝试返回所有客户的列表以及他们的地址、工作和每个客户的余额。

我尝试了以下方法:

 $customers = $user->clients()->with('balance')->with('jobs')->with('addresses')->get();

我收到以下错误

在字符串上调用成员函数 addEagerConstraints()

这无疑是急切加载,而 balance() 不是一个集合,但我想知道如何在不必循环构建数组的情况下获得相同的结果。

【问题讨论】:

    标签: php laravel laravel-5 eloquent


    【解决方案1】:

    你可以在with函数中使用条件如下

    $customers = $user->clients()
                      ->with(['jobs', 'addresses'])
                      ->with(['Fees'=> function($query){
                           $query->selectRaw('sum(fees_table_name.gross) as gross')
                                 ->where('status',2);
    
                       }])
                       ->get();
    

    【讨论】:

    猜你喜欢
    • 2020-09-08
    • 2018-02-12
    • 2016-08-07
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多