본문 바로가기

Laravel Blog

[Back] 게시글 좋아요 기능 만들기 - 3. 모델과 마이그레이션

반응형

 

안녕하세요 주갬입니다~

 

게시글 좋아요 기능을 이어서 포스팅 하도록 하겠습니다. 어제에 이어 데이터베이스에 대한 설명입니다.

 

2021.05.25 - [Laravel Blog] - [Front] 게시글 좋아요(Like / Dislike) 기능 만들기 - 1. 뷰 만들기

 

[Front] 게시글 좋아요(Like / Dislike) 기능 만들기 - 1. 뷰 만들기

안녕하세요 주갬입니다! 오늘은 라라벨 블로그의 좋아요 기능을 구현하면서 여러분들께도 설명드리려고 합니다. 저는 다음과 같이 좋아요와 싫어요가 모두 있는 유튜브의 좋아요 기능을 구현

joogaem.com

 

2021.05.26 - [Laravel Blog] - [Back] 게시글 좋아요 기능 만들기 - 2. 데이터베이스 설계

 

[Back] 게시글 좋아요 기능 만들기 - 2. 데이터베이스 설계

안녕하세요 주갬입니다~! 게시글 좋아요 기능을 이어서 포스팅 하도록 하겠습니다. 오늘은 데이터베이스 구성에 대한 설명입니다. 저는 좋아요 기능 관련 데이터베이스의 컬럼을 다음과 같이

joogaem.com

 


 

1.  모델과 마이그레이션 파일 생성

 

라라벨 루트 폴더에 들어가 모델과 마이그레이션 파일을 생성해줍니다.

 

 

php73 artisan make:model Feeling --migration

Feeling 모델과 마이그레이션 파일을 한번에 만들어주었습니다.

 

 

모델과 마이그레이션에 대한 자세한 내용은 라라벨 공식문서를 참고하시기 바랍니다.

https://laravel.com/docs/8.x/eloquent#generating-model-classes

 

Eloquent: Getting Started - Laravel - The PHP Framework For Web Artisans

Eloquent: Getting Started Introduction Laravel includes Eloquent, an object-relational mapper (ORM) that makes it enjoyable to interact with your database. When using Eloquent, each database table has a corresponding "Model" that is used to interact with t

laravel.com


 

2. 마이그레이션 파일 편집

 

php73 artisan make:model Feeling --migration

으로 마이그레이션 파일을 최초 생성하면 다음과 같이 틀만 잡혀있는 파일이 생성됩니다. 

 

2021_05_25_175415_create_feelings_table.php

 

이제 이 파일을 제가 원하는 데이터베이스의 모양이 되도록 수정해야합니다. 

저번 게시글에서 말씀드렸던 대로 스키마를 작성하였습니다.

 

//2021_05_25_175415_create_feelings_table.php

<?php

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

class CreateFeelingsTable extends Migration
{
    public function up()
    {
        Schema::dropIfExists('feelings');
        //'feelings'라는 테이블이 있다면 삭제하고
        Schema::create('feelings', function (Blueprint $table) {
        //'feelings' 테이블을 생성합니다.
        
            $table->id(); //auto_increment
		   $table->string('board_no'); //게시글번호
		   $table->string('user'); //로그인한 사용자
		   $table->integer('like_no'); // 0 or 1        	
		   $table->integer('dislike_no'); // 0 or 1   	
            $table->integer('check'); // 0 or 1
            $table->timestamp();
    	});
    }

    public function down()
    {
        Schema::dropIfExists('feelings');
    }
}

feelings라는 테이블을 생성하고 컬럼들을 적어줍니다. 자세한 설명은 주석을 참고하시기 바랍니다.

 


3. 마이그레이션

artisan migrate 명령어를 이용해 마이그레이션을 진행하고 DB를 확인해봅니다.

 

feelings 테이블이 성공적으로 생성되었습니다!! 

 


 

4. 모델 편집

데이터베이스의 틀을 만들어 주었다면 값을 넣어주어야겠죠?

 

값을 넣어주기 위해서는 모델에 값을 저장시키는 함수를 만들어 주어야 합니다.

 

저는 앞서 생성한 Feeling 모델 파일을 다음과 같이 편집해 주었습니다.

// app/Models/Feeling.php


<?php

namespace App\Models;

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

class Feeling extends Model
{
    use HasFactory;
    
	protected $table = 'feelings';
	//feelings 테이블을 사용한다.
    
	  public function save(array $request=[])
      // request 받은 내용을 array로 받아와서 save() 메소드의 파라미터로 사용한다.
	    {
	        if(parent::save($request))
	        {
	            $this->input('board_no','user','like_no','dislike_no','check');
                //들어온 값을 저장한다.
	        }
	    }
	

    protected $fillable = [
        'board_no','user','like_no','dislike_no','check'
        //변경하면 안되는 속성값인 id를 제외하고 값을 저장할 나머지 속성값들을 적어준다.
    ];

}

다음과 같이 save() 메소드와 fillable변수만 잘 설정해주시면 됩니다. 자세한 설명은 주석을 참고해주세요.  

 

이제 데이터베이스 쪽 설정은 끝났으니 클라이언트에서 컨트롤러의 작동에 따라 데이터베이스로 값을 넘겨줄 수 있겠습니다^^ 

 

 

MVC 패턴에서 Model 과 Database부분을 작업해보았습니다.

 


 

다음시간에는 이 모델을 이용해 클라이언트에서 컨트롤러를 통해 데이터베이스로 값을 넘겨주는 과정과 에 대해 설명드리도록 하겠습니다!

 

 

위의 MVC패턴에서 route와 controller 부분만 남았네요~!! 화이팅!

반응형