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