Laravel路线与变量

时间:2014-04-23 17:50:18

标签: laravel

我有带show功能的控制器:

class CssController extends BaseController 
{
    public function show($id)
    {
        $csstablepost = CssTable::findOrFail($id);
        return View::make('posts/csspost1', compact('csstablepost'));
    }
}

我的路线:

Route::get('/css3/{id}', 'CssController@show' );

一切正常,核心ID正在路上,但我希望在我的路线中获得$ title。我在数据库中有title和id列。如果我将所有ID更改为标题,但为什么我的路由不使用标题?有没有办法,在路线名称中获得我的头衔?

2 个答案:

答案 0 :(得分:1)

我假设您要将查询更改为CssTable::findOrFail($title);findOrFail()会查找您桌面上的PK。您也希望将此更改为CssTable::where('title', '=', $title)->firstOrFail();

完整示例:

class CssController extends BaseController 
{
    public function show($title)
    {
        $csstablepost = CssTable::where('title', '=', $title)->firstOrFail();
        return View::make('posts/csspost1', compact('csstablepost'));
    }
}

Route::get('/css3/{title}', 'CssController@show');

查看更多documentation

答案 1 :(得分:0)

尝试使用以下代码 -

class CssController extends BaseController 
{
    public function show($id)
    {
        $csstablepost = CssTable::where('id', '=', $id)->first();

        return View::make('posts/csspost1')->with('csstablepost', $csstablepost);
    }
}

现在转到路线页面 -

Route::get('css3/{title}', 'CssController@show');

希望,它会奏效。