2017-12-06 4 views
1

Ich versuche zu Debug-Daten finden, wenn ich versuche, einige Spalt auf Datenbank beispielsweise id wie 1, zu bearbeiten, wenn ich laufe diese URL auf Adressleiste:Laravel Daten nach Modell

http://127.0.0.1:8000/content_category/1/edit 

ich das bekommen Ergebnis:

ContentCategories {#246 ▼ 
    #table: "contents_categories" 
    #guarded: array:1 [▶] 
    #connection: null 
    #primaryKey: "id" 
    #keyType: "int" 
    +incrementing: true 
    #with: [] 
    #withCount: [] 
    #perPage: 15 
    +exists: false 
    +wasRecentlyCreated: false 
    #attributes: [] 
    #original: [] 
    #changes: [] 
    #casts: [] 
    #dates: [] 
    #dateFormat: null 
    #appends: [] 
    #dispatchesEvents: [] 
    #observables: [] 
    #relations: [] 
    #touches: [] 
    +timestamps: true 
    #hidden: [] 
    #visible: [] 
    #fillable: [] 
} 

Daten null in diesem Ergebnis, und ich habe keine Informationen über id=1

diese Spalte von Daten existieren auf Databa se und ich überprüft, dass mit phpmyadmin, meine edit Funktion auf Controller ist:

public function edit(ContentCategories $contentCategories) 
{ 
    dd($contentCategories); 
} 

und Model im Projekt:

class ContentCategories extends Model 
{ 
    protected $table = 'contents_categories'; 
    protected $guarded = ['id']; 
} 

Route:

Route::resource('content_category', 'ContentCategoriesController'); 
+0

können Sie Ihre Route Definition – lagbox

+0

@lagbox 'Strecke :: Ressource ('content_category', 'ContentCategoriesController');' –

+0

@lagbox und post aktualisieren –

Antwort

1

Sie müssen Ihre Methodensignaturen aktualisieren, um die implizite Routenmodellbindung hier verwenden zu können.

"Laravel löst automatisch eloquente Modelle auf, die in Routen oder Controller-Aktionen definiert sind, deren Typ-angezeigte Variablennamen mit einem Routensegmentnamen übereinstimmen." Laravel 5.5 Docs - Routing - Implicit Model Binding

public function edit(ContentCategories $content_category) 

Dies entspricht der Route Parameternamen zu Ihrem Typ Parameternamen angedeutet. Dies wird die Bindung ermöglichen. Ohne diese Übereinstimmung der Namen dieser Parameter wird der typhintertastete Parameter als neue Instanz dieses Modells über die Abhängigkeitsinjektion aufgelöst. Es muss die Abhängigkeit auflösen, damit Sie eine neue Modellinstanz erhalten, da sie nicht weiß, dass es sich um den Parameter handelt, für den Sie die Bindung erstellen möchten.

Zusätzliche Informationen:

„standardmäßig Route::resource werden die Routenparameter für Ihre Ressource Routen auf der Grundlage der‚vereinzelte‘-Version der Ressourcennamen erstellen.“

Laravel 5.5 Docs - Controllers - Resource Controllers - Naming Resource Route Parameters

+0

danke, mein Problem gelöst –

+0

können Sie mir helfen, warum in diesem Code bekomme ich leere Array?'öffentliche Funktionsshow (Inhalt $ manage_contents) { dd ($ manage_contents); } ', ist meine Route:' Route :: Ressource ('manage_contents', 'ContentsController'); 'und URLs ist:' http: //127.0.0.1: 8000/manage_contents/5' Vielen Dank im Voraus –

+0

gleiche Antwort als vor ... run 'php artisan route: list' und sehen, wie die Route registriert wird – lagbox

0

Versuchen Sie dies in Ihrer Methode Controller bearbeiten

public function edit($id) 
{ 
    $contentCategories = ContentCategories::find($id); 
    dd($contentCategories); 
}