laravel - 使用路由在URL中显示名称而不是id

时间:2016-10-13 09:50:23

标签: php laravel routes

需要使用该路线显示project name而不是id。 我做了但是如果我也需要控制器中的id,我用它来获取相关的project images和其他内容。如何做到这一点。

这是我的路线

Route::model('project/{name}/{sub}', array('uses' => 'projectController@show'));

这是我的控制器

public function show($name)
    {
        $seg = Request::segment(3);

        $pro = Projects::where('pro_title', $name)->first();
        $proImg = ProjectsImages::where('image_id', $id)->get();
        $proPln = ProjectsPlans::where('image_id', $id)->get();
        $services = $pro->pro_serves;
        $service = explode(',', $services);

        switch ($seg) {
            case "project-plans":
                return View::make('projects.projectDetails.verticalPlans', compact('pro', 'proPln'));
                break;
            case "project-images":
                return View::make('projects.projectDetails.projectImages', compact('pro', 'proImg'));
                break;
            case "project-map":
                return View::make('projects.projectDetails.projectPlace', compact('pro'));
                break;
            case "project-features":
                return View::make('projects.projectDetails.projectFeatures', compact('pro', 'service'));
                break;
            default :
                return View::make('projects.projectDetails.aboutProject', compact('pro'));
                break;
        }
    }

现在您可以看到我已经成功获得了project_title命名的路由,但我也需要id来获取其他内容

任何人都可以帮助我如何实现这一目标。

1 个答案:

答案 0 :(得分:2)

您可以在控制器中检索ID

您可以使用

获取项目的所有数据
$pro = Projects::where('pro_title', $name)->first();

然后你传递检索到的id,如

 $proImg = ProjectsImages::where('image_id',  $pro->id)->get();
        $proPln = ProjectsPlans::where('image_id', $pro->id)->get();