使用路由在url中显示名称而不是id


show name instead of id in a url using routing

需要显示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来获取其他东西

有谁能告诉我该怎么做吗?

您可以在控制器

中检索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();