216.73.216.172 TODAY : 3,763

PHP ์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ๊ณ ๊ธ‰

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 2์ฃผ์ฐจ: ORM (Object-Relational Mapping) ํ™œ์šฉ - 02 ๋ชจ๋ธ ์ƒ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™

๐Ÿ“š 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๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํด๋ž˜์Šค์•ผ.

uploadImage


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 #์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ด์„œ ์ƒˆ๋กœ์šด #๋ฐ์ดํ„ฐ๋ฅผ #ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ด์ค˜.

uploadImage


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 #์ฟผ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด.

uploadImage



๋ฃจ์  VPN, #VPN์ถ”์ฒœ ๋ํŒ์™•! #๋ฉ€ํ‹ฐIP์™€ ๊ฐ•๋ ฅํ•œ #API ์ง€์›์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋งž์ถค ์ตœ์ ํ™”. 

์•ˆ์ •์ ์ด๊ณ  ๋น ๋ฅธ ์†๋„๋กœ ์ œํ•œ ์—†์ด ์ž์œ ๋กœ์šด #์ธํ„ฐ๋„ท ์„ ๋ฃจ์  VPN ์œผ๋กœ

https://vpn.luzensoft.com