# Laravel ์
๋ฌธ ๊ฐ์ด๋
## 1. Laravel์ด๋?
Laravel์ PHP ๊ธฐ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ์
๋๋ค. MVC ํจํด์ ๋ฐ๋ฅด๋ฉฐ, ์ฐ์ํ ๋ฌธ๋ฒ๊ณผ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
### ์ฃผ์ ํน์ง
- Eloquent ORM (๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ์ํ)
- Blade ํ
ํ๋ฆฟ ์์ง
- Artisan CLI ๋๊ตฌ
- ๋ฏธ๋ค์จ์ด ์์คํ
- ๋ด์ฅ ์ธ์ฆ/๊ถํ ์์คํ
## 2. ์ค์นํ๊ธฐ
### Composer๋ก ์ค์น
```bash
composer create-project laravel/laravel myapp
cd myapp
php artisan serve
```
### ํ์ Artisan ๋ช
๋ น์ด
```bash
php artisan serve # ๊ฐ๋ฐ ์๋ฒ ์คํ
php artisan make:controller # ์ปจํธ๋กค๋ฌ ์์ฑ
php artisan make:model # ๋ชจ๋ธ ์์ฑ
php artisan make:migration # ๋ง์ด๊ทธ๋ ์ด์
์์ฑ
php artisan migrate # ๋ง์ด๊ทธ๋ ์ด์
์คํ
php artisan db:seed # ์๋ ์คํ
php artisan route:list # ๋ผ์ฐํธ ๋ชฉ๋ก
php artisan cache:clear # ์บ์ ์ญ์
php artisan config:clear # ์ค์ ์บ์ ์ญ์
php artisan view:clear # ๋ทฐ ์บ์ ์ญ์
```
## 3. ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
```
app/
โโโ Http/
โ โโโ Controllers/ # ์ปจํธ๋กค๋ฌ
โ โโโ Middleware/ # ๋ฏธ๋ค์จ์ด
โโโ Models/ # Eloquent ๋ชจ๋ธ
config/ # ์ค์ ํ์ผ
database/
โโโ migrations/ # ๋ง์ด๊ทธ๋ ์ด์
โโโ seeders/ # ์๋
resources/
โโโ views/ # Blade ํ
ํ๋ฆฟ
routes/
โโโ web.php # ์น ๋ผ์ฐํธ
โโโ api.php # API ๋ผ์ฐํธ
```
## 4. ๋ผ์ฐํ
๊ธฐ์ด
```php
// routes/web.php
Route::get("/", function () {
return view("welcome");
});
Route::get("/hello/{name}", function ($name) {
return "Hello, " . $name;
});
// ์ปจํธ๋กค๋ฌ ์ฐ๊ฒฐ
Route::get("/users", [UserController::class, "index"]);
Route::post("/users", [UserController::class, "store"]);
Route::get("/users/{id}", [UserController::class, "show"]);
Route::put("/users/{id}", [UserController::class, "update"]);
Route::delete("/users/{id}", [UserController::class, "destroy"]);
// Resource ๋ผ์ฐํธ (์ 5๊ฐ๋ฅผ ํ ์ค๋ก)
Route::resource("users", UserController::class);
```
## 5. ์ปจํธ๋กค๋ฌ
```bash
php artisan make:controller UserController --resource
```
```php
// app/Http/Controllers/UserController.php
namespace AppHttpControllers;
use AppModelsUser;
use IlluminateHttpRequest;
class UserController extends Controller
{
public function index()
{
$users = User::all();
return view("users.index", compact("users"));
}
public function store(Request $request)
{
$validated = $request->validate([
"name" => "required|max:255",
"email" => "required|email|unique:users",
]);
User::create($validated);
return redirect()->route("users.index");
}
}
```
## 6. Eloquent ORM
```php
// ๊ธฐ๋ณธ ์ฟผ๋ฆฌ
User::all(); // ์ ์ฒด ์กฐํ
User::find(1); // ID๋ก ์กฐํ
User::where("active", true)->get(); // ์กฐ๊ฑด ์กฐํ
User::first(); // ์ฒซ ๋ฒ์งธ ๋ ์ฝ๋
User::count(); // ๊ฐ์
// ์์ฑ
User::create(["name" => "Kim", "email" => "kim@test.com"]);
// ์์
$user = User::find(1);
$user->name = "Lee";
$user->save();
// ์ญ์
User::destroy(1);
$user->delete();
```
## 7. ๋ง์ด๊ทธ๋ ์ด์
```bash
php artisan make:migration create_posts_table
```
```php
public function up()
{
Schema::create("posts", function (Blueprint $table) {
$table->id();
$table->foreignId("user_id")->constrained();
$table->string("title");
$table->text("content");
$table->boolean("is_published")->default(false);
$table->timestamps();
});
}
```
## 8. Blade ํ
ํ๋ฆฟ
```html
<html>
<head>
<title>@yield("title")</title>
</head>
<body>
@yield("content")
</body>
</html>
@extends("layouts.app")
@section("title", "์ฌ์ฉ์ ๋ชฉ๋ก")
@section("content")
@foreach($users as $user)
<p>{{ $user->name }}</p>
@endforeach
@endsection
```