2016-06-26 26 views
0

Ich versuche, Datensatz von einer Produkttabelle mit dem Feld productsid zu erhalten, indem ich Eloquent benutze und den folgenden Code verwende. Mein Modellname ist Products_description.laravel Eloquent ORM benutzerdefinierter Feldname

In meiner Routendatei.

Route::get('product/{productsid}','[email protected]'); 

In meiner Controller Datei

public function show($productid) 
{ 
$Products = Products_description::find($productid); 
return $Products; 
} 

Aber es gibt mir die Fehlermeldung, dass Unknown column 'products_description.id' zeigt. Sieht aus wie Eloquent versuchen, durch den Feldnamen id standardmäßig wie bei den Tabellennamen aufzunehmen. Aber wie erhalten Sie Datensätze über ein anderes Tabellenfeld als id. z.B. Wenn es productid ist, was würden wir tun/verwenden?

+0

Können Sie mir die Tabellenstruktur und 'Products_description' Modellklasse zeigen? –

+0

Tabellenname ist 'products_description' Felder sind 'productsid' int (11), 'product_name' varchar (64). Klasse Products_description extends Modell { \t \t protected $ table = 'products_description'; } – Murtaza

Antwort

0

In Ihr Modell, deklarieren Sie Ihre $primaryKey

class Products_description { 
    protected $primaryKey = "productid"; 

    // 
} 

Auf diese Weise können Sie ::find oder und nicht where verwenden.

0

wie diese

$Products = Products_description::where('pruductid',$productid)->first(); 

oder Sie können versuchen, diese

Products_description Modell

class Products_description extends Eloquent { 

protected $primaryKey = 'productid'; 
    } 
0

ich Ihren Bedarf gehe davon ist Ihre Tabelle für einen anderen Bereich als dem primären abfragen Schlüssel . Sie können:

Products_description::where('productid',$productId)->first() 

Wenn Sie über Fremdschlüssel sprechen, dann sollten Sie sie im Modell definieren wie folgt:

return $this->hasOne('App\Phone', 'foreign_key'); 

Hier ist die entsprechende Dokumentation: https://laravel.com/docs/5.1/eloquent-relationships#one-to-one