Laravel - 从正确的数据库记录中获取id

时间:2014-04-16 15:51:35

标签: laravel eloquent

我有laravel项目。当我单击我的视图按钮时,我想看到我的记录的完整描述。但我不知道如何传递正确的身份证。我的数据库表名为 - csstable。 我有模特:

<?php 
class CssTable extends Eloquent
{
    protected $table = 'csstable';
}

每个帖子上的查看按钮(我从数据库中获取所有帖子,因此每个帖子都有ID):

<div class="view">
     <a href="{{ action('CssController@show') }}" ></a>
</div>

具有此show函数的CssController:

public function show()
{
    $csstable = CssTable::all();
    return View::make('cssposts/right_post', compact('csstable'));
}

我的路线:

Route::get('/css/id_of_right_post', 'CssController@show' );

Right_post,我想要来自行的描述栏中的信息,带有我点击的ID(在此字段中,我只看到最后一条记录&#39; s描述:

<h1 style="color:#fff">{{ $css->description }}</h1>

我试过这样的东西

public function show($id)
{
    $csstable = CssTable::find($id);
    return View::make('cssposts/right_post', compact('csstable'));
}

但是有一个错误 - 在show函数中缺少1个参数。所以我想知道,如何传递正确的ID!

1 个答案:

答案 0 :(得分:1)

这样做的方法包括三个步骤。首先让我们选择路线:

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

{id}表示它是一个匹配的参数 - 它将匹配一个完整的URI段(基本上是斜杠之间的任何东西)并使用它来传递给他传递的方法。所以对控制器:

class CssController
{
    public function show($id)
    {
        $csstable = CssTable::findOrFail($id);
        return View::make('cssposts/view', compact('csstable));
    }
}

该控制器方法接受(必需的)单个参数。你可以随心所欲地调用它,但在这里我要去id,因为它是模型的ID。最后,拼图的最后一部分是如何链接到这样的路线:

// view button for each csstable
<div class="view">
    {{ link_to_action('CssController@show', $item->title, array($item->getKey())) }}
</div>

正如您所看到的,我正在使用link_to_action帮助程序,但您使用<a href="{{{ action('CssController@show', array($item->getKey())) }}}">的方法也可以使用。在控制器操作名称之后,您传递一个包含URI中所有参数的数组(按顺序)。在我们的例子中,我们有一个参数,它是一个包含一个项目的数组。我认为在这些情况下你也可以使用一个字符串,Laravel会将它变成一个包含一个元素的数组。我更喜欢明确。

希望这有助于您了解如何在Laravel中使用基于参数的路由系统。