"Laravel 중급 태스크 목록"의 두 판 사이의 차이

76번째 줄: 76번째 줄:
이 명령어는 모든 데이터베이스 테이블을 생성합니다. 사용 중인 데이터베이스 클라이언트를 통해 데이터베이스 테이블을 확인하면, 마이그레이션에서 정의한 컬럼이 포함된 새로운 <code>tasks</code> 및 <code>users</code> 테이블을 볼 수 있을 것입니다. 이제 Eloquent ORM 모델을 정의할 준비가 되었습니다!
이 명령어는 모든 데이터베이스 테이블을 생성합니다. 사용 중인 데이터베이스 클라이언트를 통해 데이터베이스 테이블을 확인하면, 마이그레이션에서 정의한 컬럼이 포함된 새로운 <code>tasks</code> 및 <code>users</code> 테이블을 볼 수 있을 것입니다. 이제 Eloquent ORM 모델을 정의할 준비가 되었습니다!


===엘로퀀트 모델===
===Eloquent 모델===
[[Laravel Eloquent|Eloquent]]는 Laravel의 기본 ORM(객체 관계 매퍼)입니다. Eloquent를 사용하면 명확하게 정의된 "모델"을 통해 데이터베이스에서 데이터를 쉽게 검색하고 저장할 수 있습니다. 일반적으로 각 Eloquent 모델은 단일 데이터베이스 테이블과 직접적으로 대응됩니다.
 
;<code>User</code> 모델
먼저, <code>users</code> 데이터베이스 테이블에 대응하는 모델이 필요합니다. 그러나 프로젝트의 <code>app</code> 디렉토리를 살펴보면 Laravel에 이미 <code>User</code> 모델이 포함되어 있으므로 수동으로 생성할 필요가 없습니다.
 
;<code>Task</code> 모델
이제 <code>tasks</code> 데이터베이스 테이블에 대응하는 <code>Task</code> 모델을 정의해봅시다. Artisan 명령어를 사용하여 이 모델을 생성할 수 있습니다. 이번에는 <code>make:model</code> 명령어를 사용합니다:
 
<syntaxhighlight lang='bash'>
php artisan make:model Task
</syntaxhighlight>
 
모델은 애플리케이션의 <code>app</code> 디렉토리에 배치됩니다. 기본적으로 모델 클래스는 비어 있습니다. Eloquent 모델에 어떤 테이블과 대응되는지 명시적으로 알릴 필요는 없습니다. 왜냐하면 Eloquent는 모델 이름의 복수형을 데이터베이스 테이블로 가정하기 때문입니다. 따라서, <code>Task</code> 모델은 <code>tasks</code> 데이터베이스 테이블과 대응되는 것으로 간주됩니다.
 
이제 이 모델에 몇 가지를 추가해봅시다. 먼저, <code>name</code> 속성이 "mass-assignable(대량 할당가능)"하도록 명시하겠습니다. 이를 통해 Eloquent의 <code>create</code> 메소드를 사용하여 <code>name</code> 속성을 채울 수 있습니다:
 
<syntaxhighlight lang='php'>
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
    /**
    * 대량 할당가능한 속성.
    *
    * @var array
    */
    protected $fillable = ['name'];
}
</syntaxhighlight>
 
라우트를 애플리케이션에 추가하면서 Eloquent 모델을 사용하는 방법에 대해 더 알아볼 것입니다. 물론, 더 많은 정보를 원한다면 [[Eloquent: 시작하기|전체 Eloquent 문서]]를 참조해도 좋습니다.
 
===엘로퀀트 관계===
===엘로퀀트 관계===
==라우팅==
==라우팅==

2024년 6월 15일 (토) 22:11 판

1 개요

Intermediate Task List
중급 태스크 목록

https://laravel.com/docs/5.2/quickstart-intermediate

2 소개

이 빠른 시작 가이드는 Laravel 프레임워크에 대한 중급 소개를 제공하며, 데이터베이스 마이그레이션, Eloquent ORM, 라우팅, 인증, 인, 의존성 주입, 검증, 뷰, Blade 템플릿에 대한 내용을 포함하고 있습니다. Laravel 프레임워크나 PHP 프레임워크에 대한 기본 지식이 있는 경우, 이 가이드를 시작하기에 적합합니다.

Laravel의 기본 기능들을 샘플로 다루어 보기 위해, 태스크들을 다루는 태스크 목록 애플리케이션을 만들어 보겠습니다. 즉, 전형적인 "할 일" 목록 예제를 다루게 됩니다. "기본" 빠른 시작과 달리, 이 튜토리얼에서는 사용자가 계정을 만들고 애플리케이션에 인증할 수 있도록 할 것입니다. 이 프로젝트의 완성된 소스코드는 GitHub에서 확인할 수 있습니다.

3 설치

우선, Laravel 프레임워크을 새로 설치해야 합니다. Homestead 가상머신을 사용하거나 선택한 로컬 PHP 환경을 사용하여 프레임워크를 실행할 수 있습니다. 로컬 환경이 준비되면 Composer를 사용하여 Laravel 프레임워크를 설치할 수 있습니다:

composer create-project laravel/laravel quickstart --prefer-dist

4 데이터베이스 준비

4.1 데이터베이스 마이그레이션

먼저, 데이터베이스 테이블을 정의하기 위해 마이그레이션을 사용해 보겠습니다. Laravel의 데이터베이스 마이그레이션은 유창하고 표현적인 PHP 코드를 사용하여 데이터베이스 테이블 구조와 수정 사항을 쉽게 정의할 수 있는 방법을 제공합니다. 팀원들에게 데이터베이스의 로컬 복사본에 수동으로 열을 추가하라고 지시하는 대신, 소스 컨트롤에 푸시한 마이그레이션을 실행하기만 하면 됩니다.

users 테이블

애플리케이션 내에서 사용자가 계정을 생성할 수 있도록 할 예정이므로 모든 사용자를 저장할 테이블이 필요합니다. 다행히도 Laravel은 기본 users 테이블을 생성하기 위한 마이그레이션을 이미 제공하고 있으므로 직접 생성할 필요가 없습니다. 기본 마이그레이션은 database/migrations 디렉터리에 위치해 있습니다.

tasks 테이블

다음으로, 모든 태스크을 저장할 데이터베이스 테이블을 생성해 보겠습니다. Artisan CLI는 다양한 클래스를 생성하는 데 사용할 수 있으며, Laravel 프로젝트를 구축할 때 많은 타이핑을 절약해 줍니다. 이번에는 make:migration 명령어를 사용하여 tasks 테이블에 대한 새로운 데이터베이스 마이그레이션을 생성해 보겠습니다:

php artisan make:migration create_tasks_table --create=tasks

이 마이그레이션 파일은 프로젝트의 database/migrations 디렉토리에 생성됩니다. make:migration 명령어는 자동 증가 ID와 타임스탬프를 이미 마이그레이션 파일에 추가했습니다. 이 파일을 편집하여 태스크의 이름을 위한 name 문자열 컬럼과, tasks 테이블과 users 테이블을 연결할 user_id 컬럼을 추가해봅시다:

<?php
 
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
 
class CreateTasksTable extends Migration
{
    /**
     * 마이그레이션을 실행합니다.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('tasks', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned()->index();
            $table->string('name');
            $table->timestamps();
        });
    }
 
    /**
     * 마이그레이션을 되돌립니다.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('tasks');
    }
}

마이그레이션을 실행하려면 migrate Artisan 명령어를 사용합니다. Homestead를 사용 중이라면, 호스트 머신이 데이터베이스에 직접 접근할 수 없으므로, 가상머신 내에서 이 명령어를 실행해야 합니다:

php artisan migrate

이 명령어는 모든 데이터베이스 테이블을 생성합니다. 사용 중인 데이터베이스 클라이언트를 통해 데이터베이스 테이블을 확인하면, 마이그레이션에서 정의한 컬럼이 포함된 새로운 tasksusers 테이블을 볼 수 있을 것입니다. 이제 Eloquent ORM 모델을 정의할 준비가 되었습니다!

4.2 Eloquent 모델

Eloquent는 Laravel의 기본 ORM(객체 관계 매퍼)입니다. Eloquent를 사용하면 명확하게 정의된 "모델"을 통해 데이터베이스에서 데이터를 쉽게 검색하고 저장할 수 있습니다. 일반적으로 각 Eloquent 모델은 단일 데이터베이스 테이블과 직접적으로 대응됩니다.

User 모델

먼저, users 데이터베이스 테이블에 대응하는 모델이 필요합니다. 그러나 프로젝트의 app 디렉토리를 살펴보면 Laravel에 이미 User 모델이 포함되어 있으므로 수동으로 생성할 필요가 없습니다.

Task 모델

이제 tasks 데이터베이스 테이블에 대응하는 Task 모델을 정의해봅시다. Artisan 명령어를 사용하여 이 모델을 생성할 수 있습니다. 이번에는 make:model 명령어를 사용합니다:

php artisan make:model Task

모델은 애플리케이션의 app 디렉토리에 배치됩니다. 기본적으로 모델 클래스는 비어 있습니다. Eloquent 모델에 어떤 테이블과 대응되는지 명시적으로 알릴 필요는 없습니다. 왜냐하면 Eloquent는 모델 이름의 복수형을 데이터베이스 테이블로 가정하기 때문입니다. 따라서, Task 모델은 tasks 데이터베이스 테이블과 대응되는 것으로 간주됩니다.

이제 이 모델에 몇 가지를 추가해봅시다. 먼저, name 속성이 "mass-assignable(대량 할당가능)"하도록 명시하겠습니다. 이를 통해 Eloquent의 create 메소드를 사용하여 name 속성을 채울 수 있습니다:

<?php
 
namespace App;
 
use Illuminate\Database\Eloquent\Model;
 
class Task extends Model
{
    /**
     * 대량 할당가능한 속성.
     *
     * @var array
     */
    protected $fillable = ['name'];
}

라우트를 애플리케이션에 추가하면서 Eloquent 모델을 사용하는 방법에 대해 더 알아볼 것입니다. 물론, 더 많은 정보를 원한다면 전체 Eloquent 문서를 참조해도 좋습니다.

4.3 엘로퀀트 관계

5 라우팅

5.1 뷰 표시

5.2 인증

5.3 태스크 컨트롤러

6 레이아웃 및 뷰 구축

6.1 레이아웃 정의

6.2 자식 뷰 정의

7 태스크 추가

7.1 유효성 검사

7.2 태스크 생성

8 기존 태스크 표시

8.1 의존성 주입

8.2 태스크 표시

9 태스크 삭제

9.1 삭제 버튼 추가

9.2 라우트 모델 바인딩

9.3 인가

9.4 태스크 삭제

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}