
PHP ์จ๋ผ์ธ ๊ฐ์
>PHP - ๊ณ ๊ธ
๐ 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)์ด๋?
ORM(Object-Relational Mapping)์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ **๊ฐ์ฒด(Object)**์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋งคํํด์ฃผ๋ ๊ธฐ์ ์ด์ผ. ์ฆ, ์ฐ๋ฆฌ๊ฐ ์ฐ๋ PHP ์ฝ๋์ SQL ์ฟผ๋ฆฌ ์ฌ์ด์ ๋ฒ์ญ๊ธฐ ์ญํ ์ ํ๋ค๊ณ ๋ณผ ์ ์์ด.
๊ธฐ์กด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ ์ฅํ ๋ ๋ณต์กํ SQL ์ฟผ๋ฆฌ๋ฌธ์ ์ง์ ์์ฑํด์ผ ํ์ด. ํ์ง๋ง ORM์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ํด๋์ค๋ก, ํ ์ด๋ธ์ ํ์ ํด๋์ค์ ์ธ์คํด์ค๋ก ๋งคํํด์, SQL์ ์ง์ ์์ฑํ์ง ์๊ณ ๋ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ๋ฏ์ด ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ์ ์๊ฒ ๋ผ.
ORM์ ํต์ฌ ๊ฐ๋
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();
์ ๊ฐ์ด ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ๋ฌธ๋ฒ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์์ด.๊ด๊ณ ์ ์: ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ(์ผ๋์ผ, ์ผ๋๋ค ๋ฑ)๋ฅผ ์ฝ๊ฒ ์ ์ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ด.
์ด๋ฌํ ORM ๊ธฐ์ ๋๋ถ์ PHP ๊ฐ๋ฐ์ ๋์ฑ ํจ์จ์ ์ด๊ณ ์ฒด๊ณ์ ์ธ ๋ฐฉ์์ผ๋ก ๋ฐ์ ํ๊ฒ ๋์์ด.
๊ฐ์ฒด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋์ค ๋ฐ์ดํฐ ํ ์ธ์คํด์ค ์์ฑ ์ปฌ๋ผ MySQL PostgreSQL SQLite Eloquent Laravel ํ๋ ์์ํฌ ๋ชจ๋ธ
NTOPPRO - ์์ด์ถ ๊ด๊ณ ๋ฌธ๊ตฌ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ #์์ด์ถ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ๋ธ๋ก๊ทธ ์ฑ์ฅ์ ๊ฐ์ํํ์ธ์.
๋จ์๊ฐ์ ์๋ฐฑ ๋ช ์ ์ด์์ ์ถ๊ฐํ๊ณ , ๋ธ๋ก๊ทธ ์ง์๋ฅผ ์์น์ํค๋ ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
์๋ํ๋ #์ด์์ถ๊ฐ, #๋๊ธ, #๊ณต๊ฐ ๊ธฐ๋ฅ์ ํตํด ์ค์ ํ๋ํ๋ ์ด์์ ํ๋ณดํ๊ณ , ๋ธ๋ก๊ทธ ํ์ฑ๋๋ฅผ ๋์ฌ ๋ณด์ธ์.
๋ธ๋ก๊ทธ ์ด์ ์๊ฐ์ ์ ์ฝํ๊ณ ์ถ๋ค๋ฉด ์ง๊ธ ๋ฐ๋ก ์์ํด ๋ณด์ธ์.
์ง์์ ์ธ #์ํต ๊ด๋ฆฌ๋ฅผ ํตํด ๋ธ๋ก๊ทธ ์ ์ฌ๋ ฅ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.
#๋ธ๋ก๊ทธ๋ง์ผํ #๋ธ๋ก๊ทธ์ฑ์ฅ #๋ธ๋ก๊ทธ๊ด๋ฆฌ #๋ค์ด๋ฒ๋ธ๋ก๊ทธ
https://ntoppro.luzensoft.com