请教老师,如何对中间表中的字段求和

开发总遇到个问题,我有2张表和一个中间表
产品表 projects id|title
店铺表 shops id|name
中间表 shop_projects shop_id|project_id|count
现在求所有商品的同时获取该商品的总数量count
如果采用orm的方式,该如何处理?

JellyBool

貌似可以直接使用 getAttribute 这种形式实现

longjl1980

能麻烦老师抽空举个例子吗?

yugihuang

不知道是否合口味, 望指正.


namespace App;
use Illuminate\Database\Eloquent\Model;

class Project extends Model
{
    protected $table = 'projects';

    public function shopProject()
    {
        return $this->hasMany('App\ShopProject', 'project_id', 'id');
    }

    public static function getAllProjectsWithCountSummary()
    {
        return (new Project)->with('shopProject')->get()->map(function ($project) {
            return [
                'id' => $project->id,
                'title' => $project->title,
                'countSummary' => $project->shopProject->sum(function ($shopProject) {
                    return $shopProject->count;
                })
            ];
        })->sortBy('countSummary');
    }
}