2012-08-23 20 views
5

डिफ़ॉल्ट रूप से हम आम तौर पर आईडी संख्या द्वारा डीबी तालिका पर किसी भी प्रविष्टि को खोजते हैं। लेकिन मुझे नाम कॉलम द्वारा किसी प्रविष्टि को कैसे खोजा नहीं जा सका। लेखकeloquent Laravel में नाम का उपयोग कर प्रविष्टि कैसे प्राप्त करें?

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

} 

मॉडल:: लेखक

<?php 

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

रूट:

यह

नियंत्रक देखने पर प्रवेश पाने के लिए और इसे प्रतिपादन के लिए मेरी कोड है

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

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

दृश्य:

@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 

कैसे मैं आईडी प्रदर्शित करने के लिए, लेकिन जैसे

some.com/category/name (some.com/ के बजाय पद का नाम प्रदर्शित करने के लिए नहीं के रूप में यूआरएल कर सकता हूँ श्रेणी/आईडी)

उत्तर

20

अपने नियंत्रक में आप हमेशा अपने सुवक्ता प्रश्न के रूप में $id द्वारा खोज करने के लिए जा रहे हैं का उपयोग करता है:

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

जैसा कि आपके नामित मार्ग को एक int या स्ट्रिंग (: any) के साथ आपूर्ति की जा सकती है, $id पर नियंत्रक में एक प्रकार की जांच चलाएं और परिणाम के आधार पर एक अलग क्वेरी चलाएं।

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

} 

मुझे उम्मीद है कि आपकी मदद करता है।

साइड नोट के रूप में, आपका इलोकेंट मॉडल।

यदि आप सही नामकरण सम्मेलनों का उपयोग करते हैं तो आपको टेबल नाम की आपूर्ति करने की आवश्यकता नहीं है।

class Author extends Eloquent { 

} 

नोट विलक्षण Author एक मेज के लिए नक्शे होगा आपकी ओर से कोई हस्तक्षेप के बिना स्वचालित रूप से Authors कहा जाता है।

+0

धन्यवाद जो बहुत मदद करता है – monk

+0

दुर्भाग्य से – monk

+0

काम नहीं करता है दो शब्दों के बीच की जगह क्या है? – monk