해당 포스팅에서는 MVC 순서로 진행한다.
이유는
1.디자인패턴의 MVC모델을 공부하는 데에는 그대로 모델-뷰-컨트롤러 이 순으로 하는게 더 이해하기 쉬웠기 때문이다.
2.M에서 데이터베이스에 넣을 컬럼을 구성하면, V에서 쉽게쉽게 작성이 가능하고
C에서는 C만의 작업에 집중 할 수 있었다.
M
Model(모델)
파일의 이름은 User 로, 유저에 관한 모든 작업을 진행할 것 이다.
해당 모델을 사용했던 기능 : 회원가입,로그인,로그아웃,회원정보수정,회원탈퇴
<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Symfony\Component\HttpFoundation\Request;
class User extends Authenticatable
{
use Notifiable;
protected $table='users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'id', 'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'user_id', 'confirm_code', 'remember_token',
];
/**
* The attributes that should be cast to native types
*
* @var array
*/
}
$fillable : 입력되는 정보들을 의미, 해당 부분에 지정한 것들만 DB에 직접 입력이 가능하다.
$hidden : 해당 부분에 넣은 컬럼들은 유저가 직접 입력하지 않아도, 전송받을 때 '자동'으로 생성된다.
라라벨에선 $hidden에서 지정하지 않은 부분은 모두 입력을 받아야한다.
만약 한곳이라도 빠트리면 한곳이 입력이 안되었다는 식으로 웁스페이지가 뜰 것이다.
만약, 내가 $fillable 에 넣은 내용이 'id','name','email','password' 인데 V(뷰) 에서 'id','name','email' 만 입력하는 폼을 만들었다면 'password'는 입력받은 내용이 없어서 '?' 로 기록이 되고, 웁스페이지가 뜬다.
그런데, 만약 내가 password가 null(공란)로 들어갔으면 해서 일부러 만들지 않았을 수도 있다. 그런 경우에도 꼭 폼에 해당 password를 입력받는 전송폼을 만들어줘야한다.
Migration(마이그레이션)
MVC의 M은 분명히 모델이라는 내용이지만, M에서는 채워주는 부분, 자동으로 생성하는 부분을 구성한다.
그럼 DB의 테이블은 어디서 생성되는가에 대한 질문이 있을 수 있다.
라라벨만을 사용해서 테이블을 생성할 수 있다.
단! 기본 데이터베이스는 따로 만들어야할 필요가 있다. 해당 부분에 대한 구체적인 설명은 아래 설명에 있으니까 참고한다.
https://jins-coding-blog.tistory.com/71
게시판 만들기 - 2. 기본 설정
초기 설정은 2가지가 있는데, 이 2가지는 처음에 설정해두면 굳이 나중에 바꿀일이 없고 추가하는 일도 거의 없다. 1. config/database.php 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'url' => env('..
jins-coding-blog.tistory.com
생성하기 위해서는 MySQL이나 다른 DB의 문법처럼 create 문이 필요하다. 일일이 DB에 들어가서 생성하는 것이 아니라 라라벨에서 생성하는 방식을 사용해본다.
마이그레이션을 생성하는 명령어는 아래의 것을 사용한다.
php artisan make:migration create_'테이블이름'_table
//나의 경우
php artisan make:migrateion create_users_table
아래는 마이그레이션의 모든 코드이다.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('user_id')->unsigned();
$table->string('name');
$table->string('id')->uniqid();
$table->string('password');
$table->string('email');
$table->timestamp('email_verified_at')->nullable();
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
위의 내용은 기본 SQL문 생성시의 문법에서 라라벨로 조금만 바꾼 거기 때문에 굳이 설명하지 않는다.
만약 궁금하신 분이라면 아래 주소를 참고!
https://laravel.kr/docs/6.x/queries
라라벨 6.x - 쿼리 빌더
라라벨 한글 메뉴얼 6.x - 쿼리 빌더
laravel.kr
그럼 여기까지 데이터베이스 준비는 끝났으니 실제로 생성하고 사용하는 쪽으로 해본다.
아래는 마이그레이션들을 실행하고 테이블을 만드는 명령어이다.
php artisan migrate
//마이그레이션 되돌리기
php artisan migrate:rollback
해당 명령어에 대해 더 궁금하다면 위의 라라벨 주소를 들어가봐도 되고, 아래 주소도 참고부탁드린다.
https://jins-coding-blog.tistory.com/35
마이그레이션
마이그레이션 = migration = 이주 데이터 스키마의 버전 관리. 데이터베이스 마이그레이션을 이용하면, 테이블에 새로운 열을 추가한다든지, 열 이름을 바꾼다든지 하는 이력을 마이그레이션 코드로 남겨 두고 필..
jins-coding-blog.tistory.com
나는 Model-Migration 순으로 정리했지만, 만약 실제로 해보실 분들이라면 반대로 해보시는 걸 추천한다.
이미 어떤 항목들을 넣을지 생각이 정해지신 분이라면 상관없겠지만, 정해지지 않은 분이라면 마이그레이션으로 미리 테이블을 만들어놓고 그 다음 직접채워넣을 것과, 자동으로 채워넣을 것을 구분하시는게 좋을 것 같다.
'프로젝트 > 커뮤니티 사이트 프로젝트 - 과정' 카테고리의 다른 글
브금저장소 음악 저장 (0) | 2020.07.27 |
---|---|
new 로그인 구성 1. DB설정 (0) | 2020.03.23 |
(1) php->Mysql 데이터 베이스 생성 (0) | 2020.01.14 |