Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 计算引用的总容量_Laravel - Fatal编程技术网

Laravel 计算引用的总容量

Laravel 计算引用的总容量,laravel,Laravel,我有一个会议,有两种注册类型“一般”和“加” 一般注册类型的容量为“100” plus注册类型的容量为“50” 因此,会议的总容量为“150” 但是我得到的是“1080”而不是下面的“150”。你知道问题在哪里吗 public function stats($id) $conference = Conference::where('id',$id)->firstOr(function(){ return redirect('/'); }); $con

我有一个会议,有两种注册类型“一般”和“加”

一般注册类型的容量为“100”

plus注册类型的容量为“50”

因此,会议的总容量为“150”

但是我得到的是“1080”而不是下面的“150”。你知道问题在哪里吗

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
,然后尝试更新,并让我知道第一个,我不知道问题出在哪里。只需重新检查您的关系定义以确保它们匹配。可能值得使用模型中的更多代码更新您的问题