具有多个父ID的Laravel查询

时间:2017-03-15 05:24:50

标签: php mysql laravel

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

Sprint Controller:

<?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";
    }   


}

这是我到目前为止,但它给了我这个错误

  

Container.php第748行中的BindingResolutionException:   目标[App \ Http \ Controllers \ SprintController]不可实例化。

由于

1 个答案:

答案 0 :(得分:0)

你的构造函数是私有的,这就是你实际上有这个错误的原因。