Laravel 게시판 만들기 - (1)

임승범·2023년 3월 14일
0

1. 프로젝트 설치

먼저 cmd 명령어 입력 창에서 프로젝트를 만들 위치로 이동한 다음 composer를 이용하여 프로젝트를 생성해줍니다.

	composer create-project laravel/laravel project_name

2. 데이터베이스 설정

게시판을 위한 Boards라는 테이블을 작성해줍니다.

Key컬럼명데이터 타입조건설명
PKboard_idbigintnot null, auto_increment게시판 테이블의 Primary key
board_titlevarcharnot null게시글 제목
board_contentlongtextnot null게시글 내용
created_attimestampnot null게시글 작성일
updated_attimestampnot null게시글 수정일

그런 다음 프로젝트가 사용할 mysql 정보를 .env 파일에 다음과 같이 입력해줍니다.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=''사용할 스키마 이름''
DB_USERNAME=''사용할 MYSQL 계정 이름''
DB_PASSWORD=''사용할 MYSQL 계정 비밀번호''

3. Migration & Model

마이그레이션 (Migration)은 데이터베이스의 스키마를 정의하는 것이고, 모델 (Model)은 데이터베이스에 접근하는 객체라고 생각하면 될 거 같습니다.

마이그레이션과 모델은 아래와 같은 아티즌 명령어로 생성할 수 있습니다.

php artisan make:migration create_boards_table
php artisan make:model Board

그러면 모델과 마이그레이션 파일이 생성된 것을 확인할 수 있습니다.

그렇다면 이제 마이그레이션 파일과 모델 파일을 수정할 차례입니다.

마이그레이션 파일은 다음과 같이 수정합니다.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBoardsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('boards', function (Blueprint $table) {
            $table->id('board_id'); // 해당 테이블의 Pirmary Key를 bigint(auto-increment) 타입으로 생성
            $table->string('board_title', 255); // boardTitle라는 이름의 컬럼을 varchar(255) 타입으로 생성
            $table->longText('board_content'); // boardContent라는 이름의 컬럼을 longtext 타입으로 생성
            $table->timestamp('created_at'); // createdAt라는 이름의 컬럼을 timestamp 타입으로 생성
            $table->timestamp('updated_at'); // updatedAt라는 이름의 컬럼을 timestamp 타입으로 생성
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('boards');
    }
}

그 다음 모델 파일은 다음과 같이 수정합니다.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Board extends Model
{
    use HasFactory;

    protected $table = 'boards'; // 테이블 이름
    protected $primaryKey = 'board_id'; // 테이블의 Primary key 컬럼 이름
    public $timestamps = false;
    protected $fillable = ['board_title', 'board_content', 'created_at', 'updated_at'];
}

※ Laravel 모델에서 $timestamps 속성은 모델에서 생성 및 업데이트 시 자동으로 생성되는 created_atupdated_at
컬럼을 나타냅니다.
기본적으로, Laravel은 Eloquent 모델에서 created_atupdated_at 컬럼을 자동으로 처리하기 위해 타임스탬프를 사용합니다.
이를 위해, 모델 클래스에 $timestamps 속성이 있으며 기본값은 true 입니다. 하지만 우리는 boards 테이블에서 created_atupdated_at 컬럼을 사용하지 않기 때문에 $timestampsfalse로 설정하였습니다.

$fillable 속성을 사용하면 모델의 대량 할당을 보안상 안전하게 사용할 수 있어 작성해야하는 속성입니다.
$fillable 속성은 대량 할등으로 할당할 수 있는 속성을 지정해주는것입니다. 즉, $fillable 속성에 지정된 속성만 대량 할당으로 할당할 수 있는것입니다.

모델과 마이그레이션 파일을 모두 수정하였으면, 아래 명령어로 migration을 실행하여 데이터베이스에 테이블을 생성합니다.

	php artisan migrate

profile
어제보다 더 많이 아는 개발자

0개의 댓글