【问题标题】:Laravel route with variable带有变量的Laravel路线
【发布时间】:2014-04-23 17:50:17
【问题描述】:

我有带显示功能的控制器:

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' );

一切正常,并且 corect id 在路线中,但我想在我的路线中获得 $title。我在数据库中有标题和 ID 列。如果我将所有 id 更改为标题,为什么我的路线不适用于标题,但适用于 id?有没有办法在路线名称中获得我的标题?

【问题讨论】:

    标签: laravel


    【解决方案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

    【讨论】:

    • 您是否将public function show() {} 中的$id 更改为$title
    • 我忘记了。但现在我有这个错误 - 没有模型 [CssTable] 的查询结果。但是我的数据库中有标题,例如 id。为什么没有结果?
    • 我不太使用 Laravel 的 Eloquent,但听起来好像是在说它在 DB 中找不到带有 $title 的行。将dd($title); 放在CssTable::where() 函数之前,这将输出$title 并终止脚本。那你可以尝试手动运行查询SELECT * FROM [insert_table_here] WHERE title="[insert_$title_here]";,看看有没有返回结果?
    • dd($title);我得到 1,它是标题的 id
    • 哦,也许我误解了你的问题。你需要去/css3/title-goes-here 而不是/css3/1 我的解决方案才能工作。你想做点不一样的事吗?
    【解决方案2】:

    试试下面的代码-

    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');
    

    希望,它会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      相关资源
      最近更新 更多