从laravel中获取数据与视图的更深层次的关系和显示

dfty9e19  于 2022-12-01  发布在  其他
关注(0)|答案(2)|浏览(133)
$suppliers = Supplier::with(
            [
                'purcheses' => function ($query) {
                    $query->with(
                        [
                            'payments' => function ($query) {
                                $query->sum('amount');
                            }
                        ]
                    )->get();
                }
            ]
        )->latest()->get();

我有一个采购表的采购有多个关系的供应商表,付款有多个**关系,付款属于采购,**如何得到属于该供应商的每笔采购的付款总额?

vmdwslir

vmdwslir1#

我认为this包可能会对您有所帮助,
package's readme说明了此包支持的各种类型的关系:

  • 具有多个
  • 多对多
  • 变形多个
  • 变形为多个
  • 按多个预测
  • 所属对象

下面是一个来自复杂关系的HasMany关系自述文件的示例:

/*
 Country
   -> has many
 User
   -> has many
 Post
   -> has many
 Comment
*/
 
class Country extends Model
{
    use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
 
    public function comments()
    {
        return $this->hasManyDeep('App\Comment', ['App\User', 'App\Post']);
    }
}
 
// Access country comments
$country->comments();

在上面的示例中,包使用Eloquent约定键,并且包允许您为本地键和外键指定自定义键。

dnph8jn4

dnph8jn42#

您可能需要尝试flatMap和loadSum:

$suppliers = Supplier::with('purchases')
    ->get();

// Load the payments total for each purchase.
$suppliers
    ->flatMap
    ->purchases
    ->loadSum('payments', 'amount');

return $suppliers;

相关问题