Laravel 개발: Laravel Eloquent를 사용하여 데이터베이스 모델을 구축하는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-06-14 08:21:39
원래의
1479명이 탐색했습니다.

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는 다음을 포함하는 몇 가지 기본 속성과 메소드를 정의했습니다.

  1. $fillable 속성: 일괄 할당할 수 있는 속성을 정의합니다. 주입 공격을 방지합니다. create() 및 update() 메서드를 사용하여 생성/업데이트 요청으로 채울 수 있습니다.
protected $fillable = [
    'name', 'email', 'password',
];
로그인 후 복사
  1. $hidden 속성: 배열에서 숨겨져야 하는 속성을 정의합니다. 직렬화할 때 이러한 속성은 숨겨집니다.
protected $hidden = [
    'password', 'remember_token',
];
로그인 후 복사
  1. $casts 속성: 기본 유형(정수, 부울, 부동 소수점 등) 또는 사용자 정의 개체로 변환해야 하는 속성을 정의합니다.
protected $casts = [
    'email_verified_at' => 'datetime',
];
로그인 후 복사

4. 모델 방법

Laravel Eloquent는 모델에서 데이터 작업을 수행하는 몇 가지 방법을 제공합니다. 다음은 가장 일반적인 모델 메소드 중 일부입니다:

  1. where(): WHERE 조건을 추가하는 데 사용됩니다.
$user = User::where('name', 'John')->first();
로그인 후 복사
로그인 후 복사
  1. find(): 모델의 기본 키 ID로 레코드를 찾는 데 사용됩니다.
$user_id = 1;
$user = User::find($user_id);
로그인 후 복사
  1. first(): 처음 발견된 레코드를 반환합니다.
$user = User::where('name', 'John')->first();
로그인 후 복사
로그인 후 복사
  1. get(): 발견된 모든 레코드를 반환합니다.
$users = User::all();
로그인 후 복사
  1. create(): 새 데이터 레코드를 만드는 데 사용됩니다.
User::create(['name' => 'Taylor', 'email' => 'taylor@example.com', 'password' => 'password']);
로그인 후 복사
  1. update(): 기록을 업데이트하는 데 사용됩니다.
$user = User::find($user_id);
$user->name = 'Updated Name';
$user->save();
로그인 후 복사
  1. delete(): 레코드를 삭제하는 데 사용됩니다.
$user = User::find($user_id);
$user->delete();
로그인 후 복사

위는 데이터베이스에서 추가, 삭제, 수정 및 쿼리 작업을 빠르게 구현할 수 있는 몇 가지 기본 Laravel Eloquent 모델 메서드입니다.

5. 연관 관계

Laravel Eloquent는 일대일, 일대다, 다대다 등 다양한 관계와 다형성 관계를 정의하는 편리한 방법도 제공합니다. 다음은 몇 가지 예입니다.

  1. 일대일(One to One)

일대일 연결에서 각 모델 인스턴스는 다른 관련 모델 인스턴스와만 연결됩니다. 예를 들어, 사용자 테이블의 각 행은 사용자의 전화번호를 저장하는 전화 테이블의 행과 연관될 수 있습니다. 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');
    }
}
로그인 후 복사
  1. 일대다

일대다 관계에서는 하나의 모델 인스턴스가 다른 모델 인스턴스와 연결되고, 다른 인스턴스가 여러 모델 인스턴스와 연결될 수 있습니다. 예를 들어 포럼 사이트에서 각 템플릿은 많은 댓글과 연결될 수 있습니다. 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');
    }
}
로그인 후 복사
  1. 다대다

다대다 관계에서 모델 인스턴스는 다른 여러 모델 인스턴스와 연결되며, 관련된 각 모델 인스턴스는 여러 모델 인스턴스와 연결될 수도 있습니다. 예를 들어, 블로그의 각 기사에는 여러 카테고리 태그가 있을 수 있으며, 각 태그에는 여러 기사가 있을 수도 있습니다. 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');
    }
}
로그인 후 복사
  1. 多态关联(Polymorphic Relations)

多态关联允许模型通过多个中介模型与其他模型进行多对多关联。例如,在应用中可以使用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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿