์จ๋ผ์ธ ๊ฐ์
>PHP - ๊ณ ๊ธ
๐ PHP ๊ณ ๊ธ - 2์ฃผ์ฐจ: ORM (Object-Relational Mapping) ํ์ฉ - 02 ๋ชจ๋ธ ์์ฑ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋
				์ฃผ์ ํ๋ก๊ทธ๋จ ์คํ
- ํ์ : 10.0
 - ๋ผ์ด์ ์ค: free
 - ์ด์์ฒด์ :
 - ํ์ผ ํฌ๊ธฐ: 0
 
ํผ๋๋ฐฑ ๋ฐ ๋ค์ด๋ก๋
- ์ฌ์ฉ์ ํ์ : 10.0
 - ๋ค์ด๋ก๋ ์: 1
 - ์กฐํ์: 47
 
์ ์กฐ์ฌ ๋ฐ ๋ฑ๋ก ์ ๋ณด
- ์ ์์ฌ: LUZENSOFT
 - ๋ฑ๋ก์ผ: 2025-09-03 21:32:45
 
- ์ค๋ช
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 IlluminateDatabaseCapsuleManager 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 IlluminateDatabaseEloquentModel;
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 ์ผ๋ก