먼저 cmd 명령어 입력 창에서 프로젝트를 만들 위치로 이동한 다음 composer를 이용하여 프로젝트를 생성해줍니다.
composer create-project laravel/laravel project_name
게시판을 위한 Boards라는 테이블을 작성해줍니다.
Key | 컬럼명 | 데이터 타입 | 조건 | 설명 |
---|---|---|---|---|
PK | board_id | bigint | not null, auto_increment | 게시판 테이블의 Primary key |
board_title | varchar | not null | 게시글 제목 | |
board_content | longtext | not null | 게시글 내용 | |
created_at | timestamp | not null | 게시글 작성일 | |
updated_at | timestamp | not null | 게시글 수정일 |
그런 다음 프로젝트가 사용할 mysql 정보를 .env
파일에 다음과 같이 입력해줍니다.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=''사용할 스키마 이름''
DB_USERNAME=''사용할 MYSQL 계정 이름''
DB_PASSWORD=''사용할 MYSQL 계정 비밀번호''
마이그레이션 (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_at
및 updated_at
컬럼을 나타냅니다.
기본적으로, Laravel은 Eloquent 모델에서 created_at
및 updated_at
컬럼을 자동으로 처리하기 위해 타임스탬프를 사용합니다.
이를 위해, 모델 클래스에 $timestamps
속성이 있으며 기본값은 true
입니다. 하지만 우리는 boards 테이블에서 created_at
및 updated_at
컬럼을 사용하지 않기 때문에 $timestamps
를 false
로 설정하였습니다.
※ $fillable
속성을 사용하면 모델의 대량 할당을 보안상 안전하게 사용할 수 있어 작성해야하는 속성입니다.
$fillable
속성은 대량 할등으로 할당할 수 있는 속성을 지정해주는것입니다. 즉, $fillable
속성에 지정된 속성만 대량 할당으로 할당할 수 있는것입니다.
모델과 마이그레이션 파일을 모두 수정하였으면, 아래 명령어로 migration을 실행하여 데이터베이스에 테이블을 생성합니다.
php artisan migrate