<?phpuseIlluminate\Support\Facades\Route;useApp\Http\Controllers\TestController;/*|--------------------------------------------------------------------------| Web Routes|--------------------------------------------------------------------------|| Here is where you can register web routes for your application. These| routes are loaded by the RouteServiceProvider within a group which| contains the "web" middleware group. Now create something great!|*/Route::get('/test/{id}', [TestController::class,'index']);Route::get('/test2/{id}', [TestController::class,'index2']);Route::get('/create/{id}', [TestController::class,'create']);Route::get('/create2/{id}', [TestController::class,'create2']);
<?phpnamespaceApp\Models;useIlluminate\Contracts\Auth\MustVerifyEmail;useIlluminate\Database\Eloquent\Factories\HasFactory;useIlluminate\Foundation\Auth\Useras Authenticatable;useIlluminate\Notifications\Notifiable;useLaravel\Sanctum\HasApiTokens;classUserextendsAuthenticatable{useHasFactory;public $timestamps =false;protected $fillable = ['name' ];/** * The roles that belong to the user. */publicfunctionroles() {return$this->belongsToMany(Role::class,'role_user'); }}
<?phpnamespaceApp\Models;useIlluminate\Database\Eloquent\Factories\HasFactory;useIlluminate\Database\Eloquent\Model;classRoleextendsModel{useHasFactory;public $timestamps =false;protected $fillable = ['name' ];/** * The roles that belong to the user. *//** * The users that belong to the role. */publicfunctionusers() {return$this->belongsToMany(User::class,'role_user'); }}
Laravel Many-to-many eloquent relationships are a little bit more complicated than hasOne and hasMany relationships. An example of many to many relationships is a user with may have multiple roles, where the role are also connected with multiple users. We can define many to many relationships by using belongToMany() helper with a pivot table.
So in this tutorial, you are going to learn how to create many-to-many relationships with migration with a foreign key schema for one to many relationships, use sync with a pivot table, create records, attach records, get all records, delete, update, where condition and everything related to many to many relationship.
Table Structure Of Many to Many
To define belongsToMany() relationship, three database tables are needed: users, roles, and role_user. The role_user table is called pivot table and derived from the alphabetical order of the related model names and contains user_id and role_id columns. This table will be used as an intermediate table linking the users and roles.
users id - integer name - stringroles id - integer name - stringrole_user user_id - integer role_id - integer
MakefileCopy
Defining Many to Many Relationship
Many-to-many relationships can be defined by writing a method that returns the result of the belongsToMany method. So we can create a many to many relationship with roles for a user like:
app/Models/User.php
<?phpnamespaceApp\Models;useIlluminate\Database\Eloquent\Model;classUserextendsModel{/** * The roles that belong to the user. */publicfunctionroles() {return$this->belongsToMany(Role::class,'role_user'); }}
PHPCopy
Now define the same relationship in the Role model:
app/Models/Role.php
<?phpnamespaceApp;useIlluminate\Database\Eloquent\Model;classRoleextendsModel{/** * The users that belong to the role. */publicfunctionusers() {return$this->belongsToMany(User::class,'role_user'); }}