#dynamic route binding with two models

4 messages · Page 1 of 1 (latest)

barren remnant
#

Is it possible to dynamically bind route with two models?
I have two models Members and Users with almost similar fields.

I want to use same route for basic crud operations.

#route
Route::group(['prefix' => 'members'], function () {
Route::delete('/{member}', [MembersController::class, 'destroy'])->name('members.destroy');
});

Route::group(['prefix' => 'users'], function () {
Route::delete('/{member}', [MembersController::class, 'destroy'])->name('users.destroy');
});

#MembersController
public function destroy(Request $request, Member|User $member)
{
$result = $member->delete();
redirect(route('members.index')->with('success_message', 'Member deleted!');
}

hybrid patrol
#

Not unless you write custom logic on how to resolve the route model binding

#

It seems weird to me you want to mix it tho, if a member is a user, then you already buthcered this by separating them into tables instead of adding "roles" or such to your users table

barren remnant
#

so I guess creating a trait with common functions and calling that on controller would be a best approatch here?

trait test
{
private function deleteMember(Member|User $member)
{
$result = $member->delete();
redirect(
route("members.index")->with("success_message", "Member deleted!")
);
}
}

#MembersController
use Test;
public function destroy(Request $request, Member $member)
{
$this->deleteMember($member);
}

#UsersController
use Test;
public function destroy(Request $request, User $member)
{
$this->deleteMember($member);
}