Laravel 4搜索功能

时间:2013-07-30 21:49:09

标签: laravel laravel-4

从我之前的问题,我已经从用户那里得到了这个代码。

    // app/routes.php
Route::get('characters', 'CharactersController@all');
Route::get('characters/{name}', 'CharactersController@detail');


// app/controllers/CharactersController.php
class CharactersController extends BaseController
{
    public function all()
    {
        // show all characters
    }

    public function detail($name)
    {
        // find character by name & show detail for example
        return View::make('acc.test');
    }
}

// app/views/acc/test.blade.php
// HTML::style('css/style.css') loads CSS file located at public/css/style.css
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    {{ HTML::style('css/style.css') }}
</head>
<body>

</body>
</html>

另外,搜索功能:

<form action="{{ URL::action('CharactersController@search') }}" method="get">
<input type="text" name="search-term">
<input type="submit" value="Search">

    public function search()
{
    $name = Input::get('search-term');
    $searchResult = Character::where('name', '=', $name)->get();
    ....
}

Route::get('characters/search', 'CharactersController@search');

我怎么能在:

public function detail($name) { // find character by name & show detail for example return View::make('acc.test'); }

我怎么能按名字找到这个角色?我尝试过像

这样的事情
$name = $player->name

(我有一个叫做玩家的模型,我也改变了角色::在哪里玩到哪里),我有什么要插入的?另外,我怎么能在视图中显示它?

所以我的意思是当我按名称搜索玩家时,会显示每个特定玩家的玩家名称($ player-&gt; name)。

我是否还必须将模型中的关系更改为HasMany或类似的东西?

1 个答案:

答案 0 :(得分:1)

你可以这样做

public function detail($name) {
    $player = Player::where('name', '=', $name)->first();
}

如果更多玩家可以拥有相同名称,我宁愿传递ID而不是名称,所以在这种情况下使用此解决方案

public function detail($id) {
    $player = Player::findOrFail($id);
}