Ad
Is It Possible To Make Many-to-many Morphed Relation On Same Model In Laravel? (Two Morphed By Relations Are In The Same Model)
I have Role and DocType models with tables. DocTypes must be approved by the specific Roles, and created by another specific Roles. Here is the tables structure:
Roles
id | name
DocTypes
id | name | author_id | approved
docTypes_roles_table
doc_type_id | role_id| role_type
Here is my code:
in AppServiceProvider Class:
public function boot() {
Schema::defaultStringLength(191);
Relation::morphMap([
'approve' => 'App\Models\Role',
'create' => 'App\Models\Role',
]);
}
in Role Class
public function docTypes() {
return $this->morphToMany('App\Models\DocType', 'role','doc_type_role');
}
in DocType Class
/**
* Get the polymorphic relation with roles table
*
* @return \Illuminate\Database\Eloquent\Relations\MorphToMany
*/
public function roles() {
return $this->morphedByMany('App\Models\Role', 'role','doc_type_role')->withPivot('role_type');
}
/**
* Get roles which must approve the docType
*
* @return \Illuminate\Database\Eloquent\Relations\MorphToMany
*/
public function approveRoles() {
return $this->roles()->wherePivot('role_type','approve')->withPivot('sequence')->orderBy('sequence');
}
/**
* Get roles which create the docType
*
* @return \Illuminate\Database\Eloquent\Relations\MorphToMany
*/
public function createRoles() {
return $this->roles()->wherePivot('role_type','create');
}
But when I attach the roles to createRoles()
it save to database 'approve' type.
$trip = User::find(1)->docTypes()->create([
"name" => "business_trip",
"display_name" => "Business Trip",
]);
$trip->approveRoles()->sync([
2 => ['sequence' => 1],
]);
$trip->createRoles()->attach([5,3]);
Ad
Answer
I did it by extending Role class to another CreatorRole class. But now if I need thing like this, I add another one column (ex. 'type') to pivot table and do attaching by this pivot value.
Ad
source: stackoverflow.com
Related Questions
- → "failed to open stream" error when executing "migrate:make"
- → October CMS Plugin Routes.php not registering
- → OctoberCMS Migrate Table
- → OctoberCMS Rain User plugin not working or redirecting
- → October CMS Custom Mail Layout
- → October CMS - How to correctly route
- → October CMS create a multi select Form field
- → October CMS - Conditionally Load a Different Page
- → How to disable assets combining on development in OctoberCMS
- → October CMS - Radio Button Ajax Click Twice in a Row Causes Content to disappear
- → OctoberCms component: How to display all ID(items) instead of sorting only one ID?
- → In OctoberCMS how do you find the hint path?
- → How to register middlewares in OctoberCMS plugin?
Ad