Php 具有多个父ID的Laravel查询

Php 具有多个父ID的Laravel查询,php,mysql,laravel,Php,Mysql,Laravel,我想知道从某个项目的所有sprint中选择所有可交付成果的最有效方法是什么。在此之前,我只需查询它们,并使用blade.php进行循环和if语句来过滤我需要的可交付成果。php中执行此任务最有效的方法是什么 Sprint控制器: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Requests\SprintRequest; u

我想知道从某个项目的所有sprint中选择所有可交付成果的最有效方法是什么。在此之前,我只需查询它们,并使用blade.php进行循环和if语句来过滤我需要的可交付成果。php中执行此任务最有效的方法是什么

Sprint控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Requests\SprintRequest;

use Reponse;

use App\Sprint;
use App\Deliverable;
use App\Project;

class SprintController extends Controller
{
    private function __construct(){
        $this->middleware('role:admin', ['except' => ['index', 'show']]);
}

    public function index($project_id)
    {
        $project = Project::findOrFail($project_id);
        $sprints = $project->sprints()->get();
        $deliverables = array();

        foreach ($sprints as $sprint) {
            array_push($deliverables, $sprint->deliverables()->get());
        }

        $amount = 0;
        $completed = 0;
        foreach ($deliverables as $deliverable) {
            if ($deliverable->complete == '1' && $deliverable->sprint_id == $sprint->id && $deliverable->inactive == '0') {
                $completed += 1;
                $amount += 1;
            }
            else if ($deliverable->sprint_id == $sprint->id && $deliverable->inactive == '0') {
                $amount += 1;
            }
        }

        return view('sprints.index', compact('sprints', 'deliverables', 'amount', 'completed', 'project'));
    }
    public function create($project_id)
    {
        $project = Project::findOrFail($project_id);
        $sprint = new Sprint;

        return view('sprints.create', compact('project', 'sprint'));
    }

    public function store(SprintRequest $request, $project_id)
    {
        $project = Project::findOrFail($project_id);
        $sprint = new Sprint;

        $sprint->name = $request->name;

        $project->sprints()->save($sprint);

        return "success";
    }

    public function edit($project_id, $sprint_id)
    {
        $project = Project::findOrFail($project_id);
        $sprint = $project->sprints()->findOrFail($sprint_id);

        return view('sprints.edit', compact('project', 'sprint'));
    }

    public function update(SprintRequest $request, $project_id, $sprint_id)
    {
        $project = Project::findOrFail($project_id);
        $sprint = $project->sprints()->findOrFail($sprint_id);

        $sprint->name = $request->name;

        $sprint->save();

        return "success";
    }   


}

您的构造函数是私有的,这就是您实际出现此错误的原因。

显示SprintController代码在blade中过滤什么?不应该急于加载可交付成果吗?@Eddystedove之前,我只会显示与该特定项目相关的Sprint中的可交付成果,即使每个项目的所有可交付成果都是私有的传递给view@train_fox你所说的渴望是什么意思?