Laravel 개발: Laravel Eloquent를 사용하여 데이터베이스 모델을 구축하는 방법은 무엇입니까?
Laravel은 강력하고 사용하기 쉬운 데이터베이스 작업 도구인 Laravel Eloquent를 제공하는 인기 있는 PHP 프레임워크입니다. 과거에는 PHP를 사용하여 데이터베이스 작업을 수행하려면 많은 양의 긴 SQL 문과 번거로운 코드를 작성해야 했습니다. 그러나 Laravel Eloquent를 사용하면 데이터베이스 모델을 쉽게 구축하고 신속한 개발 및 유지 관리를 수행할 수 있습니다. 이 기사에서는 Laravel Eloquent를 사용하여 데이터베이스 모델을 구축하는 방법을 소개합니다.
1. 데이터베이스 테이블 생성
먼저 데이터베이스 마이그레이션(Migration)을 통해 데이터베이스 테이블을 생성해야 합니다. Laravel에서는 명령줄 도구 artisan을 사용하여 이 프로세스를 수행할 수 있습니다. 다음을 입력하세요.
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(); });
위 코드는 id, name, email, email_verified_at, 비밀번호, Remember_token, Create_at 및update_at의 8개 필드를 포함하는 users라는 테이블을 생성합니다. 다음으로 마이그레이션 파일을 실행하여 데이터베이스 테이블을 생성합니다.
php artisan migrate
2. 모델 생성
애플리케이션에서 모델(Model)을 생성하는 것은 Laravel Eloquent를 사용하는 첫 번째 단계입니다. artisan 도구를 통해 모델을 생성할 수 있습니다:
php artisan make:model User
위 명령은 데이터베이스의 사용자 테이블에 해당하는 앱 디렉터리에 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는 일대일, 일대다, 다대다 등 다양한 관계와 다형성 관계를 정의하는 편리한 방법도 제공합니다. 다음은 몇 가지 예입니다.
일대일 연결에서 각 모델 인스턴스는 다른 관련 모델 인스턴스와만 연결됩니다. 예를 들어, 사용자 테이블의 각 행은 사용자의 전화번호를 저장하는 전화 테이블의 행과 연관될 수 있습니다. User 모델에서 모델과 전화 모델 간의 일대일 관계를 나타내는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'); } }
일대다 관계에서는 하나의 모델 인스턴스가 다른 모델 인스턴스와 연결되고, 다른 인스턴스가 여러 모델 인스턴스와 연결될 수 있습니다. 예를 들어 포럼 사이트에서 각 템플릿은 많은 댓글과 연결될 수 있습니다. Thread 모델에서 모델과 Comment 모델 간의 일대다 관계를 나타내는 comments() 메서드를 정의합니다.
class Thread extends Model { public function comments() { return $this->hasMany('AppComment'); } }
Comment 모델에서 반대의 ExceptTo() 메서드를 정의하세요.
class Comment extends Model { public function thread() { return $this->belongsTo('AppThread'); } }
다대다 관계에서 모델 인스턴스는 다른 여러 모델 인스턴스와 연결되며, 관련된 각 모델 인스턴스는 여러 모델 인스턴스와 연결될 수도 있습니다. 예를 들어, 블로그의 각 기사에는 여러 카테고리 태그가 있을 수 있으며, 각 태그에는 여러 기사가 있을 수도 있습니다. Post 모델에서 모델과 Tag 모델 간의 다대다 관계를 나타내기 위해 tagged() 메서드를 정의합니다.
class Post extends Model { public function tags() { return $this->belongsToMany('AppTag'); } }
Tag 모델에서 반대의 presentsToMany() 메소드를 정의하세요.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!