2012-08-23 28 views
5

Theo mặc định, chúng tôi thường tìm kiếm bất kỳ mục nhập nào trên bảng db theo số id. Nhưng tôi không thể tìm thấy cách tìm kiếm bất kỳ mục nhập nào bằng tên cột.Làm thế nào để tìm mục nhập bằng tên trong Laro hùng hồn?

Đây là mã của tôi cho việc tìm kiếm nhập cảnh và làm cho nó để xem

Bộ điều khiển: Tác giả

class Authors_Controller extends Base_Controller { 

    public $restful = true; 

    public function get_view($id){ 
     $authorModel = Authors::find($id); 
     return View::make('authors.view') 
      ->with('author', $authorModel) 
      ->with('title', $authorModel->name); 
    } 

} 

mẫu: Tác giả

<?php 

class Authors extends Eloquent { 
    public static $table = 'authors'; 
} 

Route:

Route::controller(Controller::detect()); 

Route::get('author/(:any)', array('as'=>'author', 'uses'=>'[email protected]')); 

Xem:

@layout('main.index') 

@section('content') 
<h1>{{$author->name}}</h1> 

<p> 
    {{$author->bio}} 
</p> 

<small> 
    {{$author->created_at}} | 
    {{HTML::link(URL::$base.'/authors/', 'Go back')}} 
</small> 
@endsection 

Làm thế nào để tôi làm cho đường dẫn url là không hiển thị id nhưng để hiển thị tên của bài như

some.com/category/name (thay vì some.com/ loại/id)

Trả lời

20

Trong điều khiển của bạn, bạn luôn đi để tìm kiếm theo $id như truy vấn hùng biện của bạn sử dụng:

$authorModel = Authors::find($id); 

Khi tuyến đường được đặt tên của bạn có thể được cung cấp với một int hoặc chuỗi (: bất kỳ) chạy một loại kiểm tra trong bộ điều khiển trên $id và chạy một truy vấn khác nhau dựa trên kết quả.

public function get_view($id) 
{ 
    if (is_numeric($id)) 
    { 
     $authorModel = Authors::find($id); 
    } 
    else 
    { 
     $column = 'name'; // This is the name of the column you wish to search 

     $authorModel = Authors::where($column , '=', $id)->first(); 
    } 

    return View::make('authors.view') 
       ->with('author', $authorModel) 
       ->with('title', $authorModel->name); 

} 

Tôi hy vọng sẽ giúp bạn.

Như một lưu ý phụ, mô hình Eloquent của bạn.

Bạn không cần phải cung cấp tên bảng nếu bạn sử dụng quy ước đặt tên chính xác.

class Author extends Eloquent { 

} 

Lưu ý số ít Author sẽ vạch vào một bảng gọi là Authors tự động mà không cần bất kỳ sự can thiệp từ bạn.

+0

Cảm ơn bạn đã giúp rất nhiều – monk

+0

thật không may là không hoạt động – monk

+0

không gian giữa hai từ có quan trọng không? – monk

Các vấn đề liên quan