라라벨 - 데이터베이스와의 작업
안녕하세요, 야심 찬 개발자 여러분! Laravel과 데이터베이스 관리의 매력적인 세계를 함께 탐험해보고자 합니다. 컴퓨터 과학을 몇 년 동안 가르쳐온 사람으로서, 데이터베이스 연산을 마스터하는 것은 자전거 타는 것을 배우는 것과 같다고 말씀드릴 수 있습니다.처음에는 어렵게 보일 수 있지만, 한 번 익어버리면 프로젝트를 손쉽게 진행할 수 있을 것입니다!
데이터베이스 연결
먼저 기본적인 내용부터 시작해보겠습니다 - 데이터베이스에 연결하는 것입니다. 이를 Laravel 애플리케이션이 새로운 최고의 친구, 데이터베이스를 소개하는 것으로 생각해보세요. 그들에게 친해지기 전에 협력할 수 없습니다!
설정
첫째로, Laravel에게 데이터베이스를 어디서 찾고 어떻게 접근할지 알려주어야 합니다. Laravel은 이를 매우 쉽게 만들어주는 설정 파일을 제공합니다. 프로젝트 루트에 있는 .env
파일을 엽니다. 다음과 같은 내용을 보게 될 겁니다:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
이 줄들은 Laravel에게 데이터베이스에 대한 지도를 제공하는 것입니다. 이를 조금 더 자세히 설명해보겠습니다:
-
DB_CONNECTION
: 사용 중인 데이터베이스 유형입니다. MySQL이 기본값이지만, Laravel은 다른 타입도 지원합니다. -
DB_HOST
: 데이터베이스가 위치한 곳입니다. 로컬 개발의 경우, 일반적으로 자신의 컴퓨터(127.0.0.1)입니다. -
DB_PORT
: 데이터베이스에 접근하기 위한 문 번호입니다. -
DB_DATABASE
: 데이터베이스의 이름입니다. -
DB_USERNAME
과DB_PASSWORD
: 데이터베이스에 접근하기 위한 비밀번호입니다.
연결 테스트
이제 Laravel이 데이터베이스를 소개한 것을 확인해보겠습니다. 이를 위해 간단한 artisan 명령어를 사용할 수 있습니다:
php artisan tinker
이 명령어는 Laravel의 인터랙티브 셸을 엽니다. 이제 연결을 시도해보겠습니다:
DB::connection()->getPdo();
만약 긴 숫자와 글자의 문자열이 나타난다면, 축하합니다! Laravel 애플리케이션과 데이터베이스가 이제 최고의 친구가 되었습니다.
테이블 생성
이제 연결이 되었으므로, 테이블을 생성해보겠습니다. 데이터베이스 세계에서 테이블은 데이터를 저장하는 스프레드시트와 같습니다.
마이그레이션
Laravel은 "마이그레이션"을 사용하여 테이블을 생성하고 수정합니다. 마이그레이션은 데이터베이스의 역사를 오고 가는 타임머신과 같은 것입니다.
마이그레이션을 생성하려면 다음 artisan 명령어를 사용합니다:
php artisan make:migration create_users_table
이 명령어는 database/migrations
폴더에 새로운 파일을 생성합니다. 이 파일을 엽니다. 다음과 같은 내용을 보게 될 겁니다:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
이는 테이블의 블루프린트와 같습니다. 이를 조금 더 자세히 설명해보겠습니다:
-
$table->id()
: 자동 증가 ID 열을 생성합니다. -
$table->string('name')
: 이름을 저장할 열을 생성합니다. -
$table->string('email')->unique()
: 고유한 이메일 열을 생성합니다. -
$table->timestamp('email_verified_at')->nullable()
: 선택 사항의 타임스탬프 열을 생성합니다. -
$table->string('password')
: 암호를 저장할 열을 생성합니다. -
$table->rememberToken()
: "remember me" 토큰을 저장할 열을 생성합니다. -
$table->timestamps()
:created_at
와updated_at
열을 생성합니다.
이제 이 테이블을 데이터베이스에 생성하려면 다음 명령어를 실행합니다:
php artisan migrate
그러면 테이블이 생성됩니다.
데이터 삽입
이제 테이블이 있으므로, 데이터를 넣어보겠습니다. Laravel에서는 몇 가지 방법으로 이를 할 수 있습니다.
Eloquent 사용
Eloquent는 Laravel의 내장 ORM(객체 관계 매핑)입니다. PHP 코드와 데이터베이스 사이의 통역사와 같습니다. 다음과 같이 데이터를 삽입할 수 있습니다:
use App\Models\User;
$user = new User;
$user->name = 'John Doe';
$user->email = '[email protected]';
$user->password = bcrypt('password');
$user->save();
이 예제에서는 새로운 User 객체를 생성하고, 속성을 설정한 후 데이터베이스에 저장합니다. 이정도면 간단합니다!
쿼리 빌더 사용
SQL과 유사한 접근 방식을 선호하는 경우, Laravel의 쿼리 빌더를 사용할 수 있습니다:
DB::table('users')->insert([
'name' => 'John Doe',
'email' => '[email protected]',
'password' => bcrypt('password'),
]);
이 방법은 좀 더 직접적입니다. 우리는 Laravel에게 정확히 어떤 테이블에 데이터를 삽입하고, 어떤 데이터를 사용할지 알립니다.
데이터检索
이제 데이터베이스에 데이터를 넣었으므로, 데이터를 다시 꺼내보겠습니다.
Eloquent 사용
모든 사용자를检索:
$users = User::all();
특정 사용자를检索:
$user = User::find(1);
조건을 사용하여 사용자를检索:
$users = User::where('name', 'John Doe')->get();
쿼리 빌더 사용
모든 사용자를检索:
$users = DB::table('users')->get();
특정 사용자를检索:
$user = DB::table('users')->where('id', 1)->first();
조건을 사용하여 사용자를检索:
$users = DB::table('users')->where('name', 'John Doe')->get();
데이터 갱신
데이터를 삽입하는 것과 마찬가지로, 데이터를 갱신하는 것도 간단합니다. 몇 가지 방법을 살펴보겠습니다.
Eloquent 사용
$user = User::find(1);
$user->name = 'Jane Doe';
$user->save();
쿼리 빌더 사용
DB::table('users')
->where('id', 1)
->update(['name' => 'Jane Doe']);
데이터 삭제
마지막으로, 데이터베이스에서 데이터를 제거하는 방법을 배워보겠습니다.
Eloquent 사용
$user = User::find(1);
$user->delete();
쿼리 빌더 사용
DB::table('users')->where('id', 1)->delete();
이제 Laravel에서 데이터베이스를 작업하는 기본적인 내용을 배웠습니다. 연습이 완벽을 만듭니다. 다양한 쿼리를 실험하고 시도하지 말라는 법은 없습니다. 얼마 지나지 않아 데이터베이스 마법사가 될 것입니다!
여기서 다룬 방법들의 빠른 참조 표입니다:
작업 | Eloquent | 쿼리 빌더 |
---|---|---|
삽입 | $user = new User; $user->save(); |
DB::table('users')->insert([]); |
모두检索 | User::all(); |
DB::table('users')->get(); |
하나检索 | User::find(1); |
DB::table('users')->where('id', 1)->first(); |
갱신 | $user->save(); |
DB::table('users')->where('id', 1)->update([]); |
삭제 | $user->delete(); |
DB::table('users')->where('id', 1)->delete(); |
미래의 데이터베이스 주宰자 여러분, 즐거운 코딩을 기원합니다!
Credits: Image by storyset