📚 PHP 고급 - 2주차: ORM (Object-Relational Mapping) 활용 - 02 모델 생성 및 데이터베이스 연동

2025. 9. 3. 21:31프로그램/PHP 고급

ORM(Object-Relational Mapping)의 개념을 이해했다면, 이제 직접 #모델 (Model)을 만들고 #데이터베이스에 연동하여 데이터를 다뤄볼 차례야. 이번 포스팅에서는 #PHP의 #ORM인 #Eloquent ORM을 활용해서 실제로 #클래스를 정의하고 #테이블과 연결하는 방법을 알아볼 거야.

1. ORM 환경 설정: Laravel 없이 Eloquent 사용하기

#Eloquent ORM은 #Laravel #프레임워크에 내장되어 있지만, #Laravel을 사용하지 않는 순수 #PHP 환경에서도 독립적으로 사용할 수 있어. 이를 위해 필요한 패키지를 #Composer로 설치하고 간단한 #설정 파일을 만들어야 해.

1-1. Composer로 패키지 설치

터미널에서 아래 명령어를 실행하여 #Eloquent와 #데이터베이스를 연결해 줄 #PHP 라이브러리를 설치해. composer require illuminate/database

1-2. 데이터베이스 설정 파일 만들기

bootstrap.php와 같은 파일을 만들어서 #데이터베이스 #연결 정보를 설정해줘. 이 파일은 모든 #PHP #스크립트에서 require 해서 사용할 거야.

PHP
 
<?php
// bootstrap.php
use Illuminate\Database\Capsule\Manager as Capsule;

require 'vendor/autoload.php';

$capsule = new Capsule;

$capsule->addConnection([
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'your_database',
    'username'  => 'your_username',
    'password'  => 'your_password',
    'charset'   => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix'    => '',
]);

$capsule->setAsGlobal();
$capsule->bootEloquent();

위 코드에서 your_database, your_username, your_password 등을 실제 #데이터베이스 #정보로 변경해줘. Capsule은 #Eloquent를 독립적으로 사용할 수 있게 해주는 클래스야.

2. 모델(Model) 클래스 생성

이제 #데이터베이스의 #테이블과 매핑될 #모델 #클래스를 만들어보자. 예를 들어, users #테이블이 있다면 User.php라는 파일을 만들고 아래와 같이 작성해.

2-1. User 모델 정의

PHP
 
<?php
// User.php
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    // Eloquent는 기본적으로 클래스 이름의 복수형을 테이블 이름으로 간주해.
    // 따라서 User 클래스는 'users' 테이블과 연결돼.
    // 만약 다른 테이블 이름을 사용하고 싶다면 protected $table = 'my_users'; 와 같이 지정할 수 있어.
}

이 코드는 #Eloquent의 #Model #클래스를 상속받아 User #클래스를 정의하고 있어. 이제 이 User #클래스는 users #테이블과 연결돼서 #데이터베이스의 #데이터를 다룰 수 있는 도구가 돼.

3. 데이터 조작 예제

모든 설정이 끝났으니, 이제 #모델을 사용해서 #데이터를 생성, 조회, 수정, 삭제하는 코드를 작성해볼게.

3-1. 사용자 데이터 생성 (Create)

PHP
 
<?php
require 'bootstrap.php';
require 'User.php';

$user = new User;
$user->name = 'John Doe';
$user->email = 'john@example.com';
$user->password = password_hash('password123', PASSWORD_BCRYPT);
$user->save();

echo "새로운 사용자가 생성되었습니다. ID: " . $user->id;

save() 메서드를 호출하면 #Eloquent가 자동으로 #SQL INSERT #쿼리를 실행해서 새로운 #데이터를 #테이블에 저장해줘.

3-2. 사용자 데이터 조회 (Read)

PHP
 
<?php
require 'bootstrap.php';
require 'User.php';

// 모든 사용자 조회
$users = User::all();
foreach ($users as $user) {
    echo $user->name . "님의 이메일은 " . $user->email . "입니다.\n";
}

// 특정 ID의 사용자 조회
$user = User::find(1);
echo "ID가 1인 사용자의 이름은 " . $user->name . "입니다.";

#Eloquent는 all()이나 find() 같은 직관적인 #메서드를 제공해서 #SQL SELECT #쿼리를 쉽게 작성할 수 있어.

 

루젠VPN, #VPN추천 끝판왕! #멀티IP와 강력한 #API 지원으로 비즈니스 맞춤 최적화. 

안정적이고 빠른 속도로 제한 없이 자유로운 #인터넷 을 루젠VPN 으로

https://vpn.luzensoft.com

 

VPN 5,500원 / IP교체 1,100원 / 유동프록시 22,000원 | LuzenVPN 루젠VPN

국내최저가 고정IP서비스,유동프록시(IP4000개이상제공),PPTP,L2TP,IPSec,OpenVPNVPN,통신사VPN,VPN프로그램,고정IP,고정아이피,PPTP,저렴한VPN,리니지MVPN,리니지VPN,아이온VPN,던파VPN,유동프록시,유동PROXY,바이

vpn.luzensoft.com