Laravel 開発: Laravel Eloquent を使用してデータベース モデルを構築するにはどうすればよいですか?
Laravel は、強力で使いやすいデータベース操作ツールである Laravel Eloquent を提供する人気の PHP フレームワークです。従来、PHPを使用してデータベース操作を行うには、必然的に長いSQL文や面倒なコードを大量に記述する必要がありましたが、Laravel Eloquentを使用することでデータベースモデルを簡単に構築でき、迅速な開発とメンテナンスを実現できます。この記事では、Laravel Eloquentを使用してデータベースモデルを構築する方法を紹介します。
1. データベース テーブルの作成
まず、データベースの移行 (Migration) によってデータベース テーブルを作成する必要があります。 Laravel では、このプロセスはコマンドライン ツール アーティザンを使用して実現できます。コマンド ラインに次のように入力します:
php artisan make:migration create_users_table
このコマンドは、app/database/migrations ディレクトリに移行ファイルを作成します。ファイル名は、2019_08_17_000000_create_users_table.php のように、現在の日付と時刻に移行の名前を加えたものになります。 。移行ファイルを変更し、対応するデータベース構造を書き込みます。
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); });
上記のコードは、users という名前のテーブルを作成します。このテーブルには、id、name、email、email_verified_at、password、remember_token、created_at、updated_at の 8 つのフィールドが含まれます。次に、移行ファイルを実行してデータベース テーブルを作成します。
php artisan migrate
2. モデルの作成
アプリケーション内でモデル (モデル) を作成することは、Laravel Eloquent を使用する最初のステップです。モデルは、artisan ツールを使用して作成できます。
php artisan make:model User
上記のコマンドは、データベースの users テーブルに対応する、user という名前のモデルをアプリ ディレクトリに作成します。デフォルトでは、Laravel Eloquent はデータベーステーブル名がモデル名の複数形であると想定します。別のテーブル名に対応させる必要がある場合、または別のデータベース接続を使用する必要がある場合は、モデル内で属性 $table および $connection を定義できます。 。
モデルの定義は次のとおりです:
namespace App; use IlluminateDatabaseEloquentModel; class User extends Model { // }
3. モデルのプロパティ
モデルでは、Laravel Eloquent は次のようないくつかのデフォルトのプロパティとメソッドを定義しています:
protected $fillable = [ 'name', 'email', 'password', ];
protected $hidden = [ 'password', 'remember_token', ];
protected $casts = [ 'email_verified_at' => 'datetime', ];
4. モデルメソッド
Laravel Eloquent は、モデル内でデータ操作を実行するためのメソッドをいくつか提供します。最も一般的なモデル メソッドの一部を次に示します。
$user = User::where('name', 'John')->first();
$user_id = 1; $user = User::find($user_id);
$user = User::where('name', 'John')->first();
$users = User::all();
User::create(['name' => 'Taylor', 'email' => 'taylor@example.com', 'password' => 'password']);
$user = User::find($user_id); $user->name = 'Updated Name'; $user->save();
$user = User::find($user_id); $user->delete();
上記は、データベースに対する追加、削除、変更、クエリ操作を迅速に実装できる、基本的な Laravel Eloquent モデルのメソッドの一部です。
5. アソシエーション関係
Laravel Eloquent は、1 対 1 (One to One)、1 対多 (One to Many) などのさまざまな関係を定義する便利な方法も提供します。多対多およびポリモーフィックな関係。以下に例をいくつか示します。
1 対 1 の関連付けでは、各モデル インスタンスは他の 1 つのモデルにのみ関連付けられます。インスタンスは関連付けられます。たとえば、users テーブルの各行は、ユーザーの電話番号を格納するphone テーブルの行に関連付けることができます。 User モデルで、モデルと電話モデルの間の 1 対 1 の関係を表すphone() メソッドを定義します。
class User extends Model { public function phone() { return $this->hasOne('AppPhone'); } }
Phone モデルで、反対の hasOne() メソッドを定義します。
class Phone extends Model { public function user() { return $this->belongsTo('AppUser'); } }
1 対多の関係では、1 つのモデル インスタンスは別のモデル インスタンスに関連付けられ、もう 1 つのモデル インスタンスは別のモデル インスタンスに関連付けられます。複数のモデル インスタンス。たとえば、フォーラム サイトでは、各テンプレートが多数のコメントに関連付けられている場合があります。 Thread モデルで、モデルと Comment モデルの間の 1 対多の関係を表す comments() メソッドを定義します。
class Thread extends Model { public function comments() { return $this->hasMany('AppComment'); } }
Comment モデルで、反対側のbelongsTo() メソッドを定義します。
class Comment extends Model { public function thread() { return $this->belongsTo('AppThread'); } }
多対多の関係では、モデル インスタンスは他の多くのモデル インスタンスに関連付けられ、各関連モデル インスタンスも複数のモデル インスタンスに関連付けられています。たとえば、ブログでは、各記事に複数のカテゴリ タグが含まれる場合があり、各タグにも複数の記事が含まれる場合があります。 Post モデルで、モデルと Tag モデルの間の多対多の関係を表す tags() メソッドを定義します。
class Post extends Model { public function tags() { return $this->belongsToMany('AppTag'); } }
タグ モデルで、反対のbelongsToMany() メソッドを定義します。
class Tag extends Model { public function posts() { return $this->belongsToMany('AppPost'); } }
多态关联允许模型通过多个中介模型与其他模型进行多对多关联。例如,在应用中可以使用comments模型对其他类型的模型进行评论。在Comment模型中,定义一个commentable()方法,表示该模型与所有支持评论的模型之间的多态关系。
class Comment extends Model { public function commentable() { return $this->morphTo(); } }
在支持评论的模型中,例如Post和Video模型中,定义morphMany()方法。
class Post extends Model { public function comments() { return $this->morphMany('AppComment', 'commentable'); } } class Video extends Model { public function comments() { return $this->morphMany('AppComment', 'commentable'); } }
以上是Laravel Eloquent提供的关联关系,可以让开发者在数据库模型中轻松处理复杂的关系结构。
七、总结
本文介绍了使用Laravel Eloquent构建数据库模型的基础知识,包括创建数据库表、创建模型、模型属性和方法,以及关联关系。Laravel Eloquent提供了一种简单和直观的方式来操作数据库,使得开发者能够快速构建应用程序,并为复杂的数据库结构提供了更干净、易于维护的解决方案。希望这篇文章对你的学习和开发有所帮助。
以上がLaravel 開発: Laravel Eloquent を使用してデータベース モデルを構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。