2017-03-09 2 views
0

Ich verwende Laravel Soft Deleting und auch Typ Hinting.Laravel: Weiche gelöschte Modelle und Typ Hinting

Ist es möglich, Modelle mit gelöschter Version Benutzern mit den entsprechenden Berechtigungen unter Verwendung von Typhinweis anzuzeigen? Out-of-the-Box-Modelle mit gelöschter Löschung können nicht typisiert werden (Laravel löst einen Fehler aus).

Beispiel-Code - Routen:

Route::resource('users', 'Admin\UsersController', [ 
    'parameters' => ['id' => 'user'], 
    'names' => [ 
     'index' => 'admin.users.index', 
     'create' => 'admin.users.create', 
     'store' => 'admin.users.store', 
     'show' => 'admin.users.show', 
     'edit' => 'admin.users.edit', 
     'update' => 'admin.users.update', 
     'destroy' => 'admin.users.destroy' 
    ] 
]); 

Und in Admin \ UsersController.php

public function show(User $user) 
{   
    // Show the $user (also if soft deleted) 
} 
+0

Was meinen Sie mit * type angedeutete *? – JSelser

+0

In meinem Fall bekommt die 'show()' Methode des UsersControllers eine Benutzer-ID. Wenn ich 'public function show (Benutzer $ user)' schreibe, versucht laravel den Benutzer mit der angegebenen Benutzer-ID zu finden. Es gibt nichts mehr zu tun, um das Modell zu erhalten (zumindest wenn es nicht gelöscht wird). – sugo

Antwort

1

Blick auf "Anpassen der Resolution Logic" in Explicit Route Model Binding. Sie möchten so etwas in app/Providers/RouteServiceProvider.php tun:

public function boot() 
{ 
    parent::boot(); 

    Route::bind('user', function ($value) { 
     return App\User::witTrashed()->find($value); 
    }); 
} 
+0

wow, toll, funktioniert gut :) – sugo

+0

Kleiner Tippfehler: 'witTrashed()' sollte 'withtrashed()' sein – mauricehofman

Verwandte Themen