216.73.216.34 TODAY : 273

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

 > 

PHP - ๊ณ ๊ธ‰

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 2์ฃผ์ฐจ: ORM (Object-Relational Mapping) ํ™œ์šฉ - 01 ORM ๊ฐœ๋… (Eloquent ORM ๋“ฑ)

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 2์ฃผ์ฐจ: ORM (Object-Relational Mapping) ํ™œ์šฉ - 01 ORM ๊ฐœ๋… (Eloquent ORM ๋“ฑ)
ํ‰์  10.0 ๋ผ์ด์„ผ์Šค free
์‚ฌ์šฉ์žํ‰์  10.0 ์šด์˜์ฒด์ œ
๋‹ค์šด๋กœ๋“œ 1 ํŒŒ์ผํฌ๊ธฐ 0
์ œ์ž‘์‚ฌ LUZENSOFT ๋“ฑ๋ก์ผ 2025-08-31 12:36:49
์กฐํšŒ์ˆ˜ 4
- ์„ค๋ช…

ORM(Object-Relational Mapping)์ด๋ž€?

uploadImage

ORM(Object-Relational Mapping)์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ **๊ฐ์ฒด(Object)**์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋งคํ•‘ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ด์•ผ. ์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ ์“ฐ๋Š” PHP ์ฝ”๋“œ์™€ SQL ์ฟผ๋ฆฌ ์‚ฌ์ด์˜ ๋ฒˆ์—ญ๊ธฐ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์–ด.

๊ธฐ์กด์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ €์žฅํ•  ๋•Œ ๋ณต์žกํ•œ SQL ์ฟผ๋ฆฌ๋ฌธ์„ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ์–ด. ํ•˜์ง€๋งŒ ORM์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ํด๋ž˜์Šค๋กœ, ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋งคํ•‘ํ•ด์„œ, SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ผ.



ORM์˜ ํ•ต์‹ฌ ๊ฐœ๋…

uploadImage


1. ๊ฐ์ฒด-ํ…Œ์ด๋ธ” ๋งคํ•‘


๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๊ฐœ๋…์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์ด PHP์˜ ํด๋ž˜์Šค์— ๋Œ€์‘๋˜๋Š” ๊ฒƒ์„ ๋งํ•ด. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— users๋ผ๋Š” ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๋ฉด, PHP์—์„œ๋Š” User๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ด ํ…Œ์ด๋ธ”์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฑฐ์•ผ.


2. ์ธ์Šคํ„ด์Šค-ํ–‰ ๋งคํ•‘


ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด) ํ•˜๋‚˜๋Š” ํ…Œ์ด๋ธ”์˜ **ํŠน์ • ํ–‰(row)**์„ ๋‚˜ํƒ€๋‚ด. User ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๋ฉด ๊ทธ๊ฒŒ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ users ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋˜๋Š” ๊ฑฐ์•ผ. ์ด ๊ฐ์ฒด์˜ ์†์„ฑ(property)์€ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ(column)์— ํ•ด๋‹นํ•ด.



ORM์˜ ์žฅ์ 



1. ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ


SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด์„œ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ํ›จ์”ฌ ๋นจ๋ผ์ ธ. ํŠนํžˆ ๋ณต์žกํ•œ ์กฐ์ธ(JOIN)์ด๋‚˜ ์„œ๋ธŒ์ฟผ๋ฆฌ๋„ ๋ฉ”์„œ๋“œ ์ฒด์ธ(Method Chaining) ํ˜•ํƒœ๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด.


2. ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด


ํ•œ ๋ฒˆ ์ •์˜ํ•œ ๋ชจ๋ธ(Model) ํด๋ž˜์Šค๋Š” ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด. ๋˜ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์ฝ”๋“œ์˜ ์ˆ˜์ •์ด ์ตœ์†Œํ™”๋ผ์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ ธ.


3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…๋ฆฝ์„ฑ


์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜(MySQL, PostgreSQL, SQLite ๋“ฑ)๋ฅผ ๋ฐ”๊พธ๋”๋ผ๋„ ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด.



PHP ORM์˜ ๋Œ€ํ‘œ์ฃผ์ž, Eloquent ORM


Eloquent ORM์€ PHP์˜ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ธ Laravel์— ํฌํ•จ๋œ ORM ๋„๊ตฌ์•ผ. ๊ฐ„๊ฒฐํ•˜๊ณ  ํ‘œํ˜„๋ ฅ์ด ํ’๋ถ€ํ•œ ๋ฌธ๋ฒ• ๋•๋ถ„์— ๋งŽ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์‚ฌ๋ž‘๋ฐ›๊ณ  ์žˆ์–ด.


Eloquent ORM์˜ ํŠน์ง•


  • Active Record ํŒจํ„ด: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์„ ํด๋ž˜์Šค๋กœ ๋งคํ•‘ํ•˜๊ณ , ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด.

  • ์ง๊ด€์ ์ธ ๋ฌธ๋ฒ•: User::where('age', '>', 30)->get();์™€ ๊ฐ™์ด ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์šด ๋ฌธ๋ฒ•์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด.

  • ๊ด€๊ณ„ ์ •์˜: ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„(์ผ๋Œ€์ผ, ์ผ๋Œ€๋‹ค ๋“ฑ)๋ฅผ ์‰ฝ๊ฒŒ ์ •์˜ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์–ด.

uploadImage

์ด๋Ÿฌํ•œ ORM ๊ธฐ์ˆ  ๋•๋ถ„์— PHP ๊ฐœ๋ฐœ์€ ๋”์šฑ ํšจ์œจ์ ์ด๊ณ  ์ฒด๊ณ„์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ฐœ์ „ํ•˜๊ฒŒ ๋˜์—ˆ์–ด.


๊ฐ์ฒด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ ํ–‰ ์ธ์Šคํ„ด์Šค ์†์„ฑ ์ปฌ๋Ÿผ MySQL PostgreSQL SQLite Eloquent Laravel ํ”„๋ ˆ์ž„์›Œํฌ ๋ชจ๋ธ




NTOPPRO - ์„œ์ด์ถ” ๊ด‘๊ณ  ๋ฌธ๊ตฌ



๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ #์„œ์ด์ถ” ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋กœ๊ทธ ์„ฑ์žฅ์„ ๊ฐ€์†ํ™”ํ•˜์„ธ์š”. 

๋‹จ์‹œ๊ฐ„์— ์ˆ˜๋ฐฑ ๋ช…์˜ ์ด์›ƒ์„ ์ถ”๊ฐ€ํ•˜๊ณ , ๋ธ”๋กœ๊ทธ ์ง€์ˆ˜๋ฅผ ์ƒ์Šน์‹œํ‚ค๋Š” ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. 

์ž๋™ํ™”๋œ #์ด์›ƒ์ถ”๊ฐ€, #๋Œ“๊ธ€, #๊ณต๊ฐ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‹ค์ œ ํ™œ๋™ํ•˜๋Š” ์ด์›ƒ์„ ํ™•๋ณดํ•˜๊ณ , ๋ธ”๋กœ๊ทธ ํ™œ์„ฑ๋„๋ฅผ ๋†’์—ฌ ๋ณด์„ธ์š”. 

๋ธ”๋กœ๊ทธ ์šด์˜ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์‹œ์ž‘ํ•ด ๋ณด์„ธ์š”. 

์ง€์†์ ์ธ #์†Œํ†ต ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ธ”๋กœ๊ทธ ์ž ์žฌ๋ ฅ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

#๋ธ”๋กœ๊ทธ๋งˆ์ผ€ํŒ… #๋ธ”๋กœ๊ทธ์„ฑ์žฅ #๋ธ”๋กœ๊ทธ๊ด€๋ฆฌ #๋„ค์ด๋ฒ„๋ธ”๋กœ๊ทธ

https://ntoppro.luzensoft.com