2012-08-23 11 views
5

Por defecto, generalmente buscamos cualquier entrada en la tabla db por número de identificación. Pero no pude encontrar cómo buscar cualquier entrada por la columna de nombre.¿Cómo encontrar una entrada usando el nombre en el elocuente Laravel?

Este es mi código para encontrar la entrada y que lo hacen para ver

Controlador: Autores

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

} 

Modelo: Autores

<?php 

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

Ruta:

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

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

Ver:

@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 

¿Cómo puedo hacer la url como no mostrar identificación, sino para mostrar el nombre del post como

some.com/category/name (en lugar de some.com/ Categoría/ID)

Respuesta

20

En su controlador que siempre va a buscar por $id como elemento de consulta utiliza elocuente:

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

Como su ruta con nombre se puede suministrar con un int o una cadena (: any) ejecute una comprobación de tipo en el controlador en $id y ejecute una consulta diferente en función del resultado.

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

} 

Espero que te ayude.

Como nota al margen, su modelo Eloquent.

No es necesario que proporcione un nombre de tabla si utiliza las convenciones de nomenclatura correctas.

class Author extends Eloquent { 

} 

Nota singular Author se asignarán a una tabla llamada Authors automáticamente sin ninguna intervención de usted.

+0

Gracias que ayuda mucho – monk

+0

lamentablemente que no funcionó – monk

+0

¿Importa el espacio entre dos palabras? – monk

Cuestiones relacionadas