Laravel 计算引用的总容量
我有一个会议,有两种注册类型“一般”和“加” 一般注册类型的容量为“100” plus注册类型的容量为“50” 因此,会议的总容量为“150” 但是我得到的是“1080”而不是下面的“150”。你知道问题在哪里吗Laravel 计算引用的总容量,laravel,Laravel,我有一个会议,有两种注册类型“一般”和“加” 一般注册类型的容量为“100” plus注册类型的容量为“50” 因此,会议的总容量为“150” 但是我得到的是“1080”而不是下面的“150”。你知道问题在哪里吗 public function stats($id) $conference = Conference::where('id',$id)->firstOr(function(){ return redirect('/'); }); $con
public function stats($id)
$conference = Conference::where('id',$id)->firstOr(function(){
return redirect('/');
});
$conferenceID = $conference->id;
$capacityOfRegistrationTypes = RegistrationType::with('conferences')->sum('capacity');
dd($capacityOfRegistrationTypes);
}
您将所有注册类型的容量相加,而不考虑会议。这可能不是你想要的。我不知道您的表是什么样子,也不知道它们包含什么,所以我假设您有多个会议,并且每个会议在注册类型中都有多个条目 你应该走另一条路:
$conferences = Conference::with('registrationTypes')->get();
现在,要获得每个会议的容量,您可以执行以下操作:
$conferences->mapWithKeys(function ($conference) {
return [ $conference->id => $conference->registrationTypes->sum('capacity') ];
});
要为特定会议执行此操作,您可以编写:
$capacity = Conference::with('registrationTypes')->find($id)->registrationTypes->sum('capacity');
这将为您创建一个数组,该数组以会议id为键,以容量为值
如果要按当前的方式进行操作,可以限制查询:
$capacityOfRegistrationTypes = RegistrationType::with('conferences')
->whereHas('conferences', function ($query) use ($id) {
$query->id = $id;
})
->sum('capacity');
谢谢,但是像这样出现了“调用未定义的方法illumb\Database\Query\Builder::conferences()”。使用“$capacityOfRegistrationTypes=RegistrationType::with('conferences')->whereHas('conferences',function($query)use($id){$id){$query->id=$id=>id=>id=>id->sum($id;})->sum('capacity');”。使用“$conferences->mapWithKeys(function($conferences){return[$conference->id=>$conference->显示“调用模型[App\Conference]上未定义的关系[registrationType]。“会议模型”类会议扩展模型{public function registrationTypes(){return$this->hasMany('App\registrationType','Conference_id');}”。缺少一个
s
,然后尝试更新,并让我知道第一个,我不知道问题出在哪里。只需重新检查您的关系定义以确保它们匹配。可能值得使用模型中的更多代码更新您的问题