After you log in to the program, you can create your first data.
The result of executing this data set:
App\Models\User:
namespace App\Models; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasFactory; /** * The attributes that are mass assignable. * @var array*/ protected $fillable = ["name", "email", "password", "country_id"]; /** * The attributes that should be cast. * @var array */ protected $casts = [ "name" => "string", "email" => "string", "password" => "string", "country_id" => "int", ]; /** * The reverse relation for "users->countries". */ public function country(): HasOne { return $this->hasOne(Country::class, "id", "country_id"); } /** * The opposite relation for "users->books". */ public function books(): BelongsToMany { return $this->belongsToMany( Book::class, "users_books", "user_id", "book_id", ); } }
App\Models\Country:
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Factories\HasFactory; class Country extends Model { use HasFactory; /** * The attributes that are mass assignable. * @var array*/ protected $fillable = ["name"]; /** * The attributes that should be cast. * @var array */ protected $casts = ["name" => "string"]; /** * The opposite relation for "countries->users". */ public function users(): HasMany { return $this->hasMany(User::class, "country_id", "id"); } }
App\Models\Book:
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Factories\HasFactory; class Book extends Model { use HasFactory; /** * The attributes that are mass assignable. * @var array*/ protected $fillable = ["name", "content"]; /** * The attributes that should be cast. * @var array */ protected $casts = ["name" => "string", "content" => "string"]; /** * The reverse relation for "books->users". */ public function authors(): BelongsToMany { return $this->belongsToMany( User::class, "users_books", "book_id", "user_id", ); } }
/database/migrations/2022_12_01_000000_create_users_table.php:
use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; use Illuminate\Database\Migrations\Migration; return new class extends Migration { /** * Run the migrations. * @return void */ public function up() { Schema::create("users", function (Blueprint $table) { $table->id(); $table->string("name"); $table->string("email"); $table->string("password"); $table ->foreignId("country_id") ->nullable() ->constrained("countries") ->cascadeOnUpdate() ->cascadeOnDelete() ->nullOnDelete(); $table->timestamps(); }); } /** * Reverse the migrations. * @return void */ public function down() { Schema::dropIfExists("users"); } };
/database/migrations/2022_12_01_000001_create_countries_table.php:
use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; use Illuminate\Database\Migrations\Migration; return new class extends Migration { /** * Run the migrations. * @return void */ public function up() { Schema::create("countries", function (Blueprint $table) { $table->id(); $table->string("name"); $table->timestamps(); }); } /** * Reverse the migrations. * @return void */ public function down() { Schema::dropIfExists("countries"); } };
/database/migrations/2022_12_01_000002_create_books_table.php:
use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; use Illuminate\Database\Migrations\Migration; return new class extends Migration { /** * Run the migrations. * @return void */ public function up() { Schema::create("books", function (Blueprint $table) { $table->id(); $table->string("name"); $table->string("content"); $table->timestamps(); }); } /** * Reverse the migrations. * @return void */ public function down() { Schema::dropIfExists("books"); } };
/database/migrations/2022_12_01_999999_create_users_books_table.php:
use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; use Illuminate\Database\Migrations\Migration; return new class extends Migration { /** * Run the migrations. * @return void */ public function up() { Schema::create("users_books", function (Blueprint $table) { $table->foreignId("user_id")->constrained("users"); $table->foreignId("book_id")->constrained("books"); }); } /** * Reverse the migrations. * @return void */ public function down() { Schema::dropIfExists("users_books"); } };