๐Ÿ”ง ๋ฐฑ์—”๋“œ ๐ŸŒฑ ์ž…๋ฌธ

Laravel ์ž…๋ฌธ

PHP ํ”„๋ ˆ์ž„์›Œํฌ Laravel๋กœ ์›น ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•˜๊ธฐ

โฑ๏ธ 8์‹œ๊ฐ„ ๐Ÿ‘๏ธ 49 ์กฐํšŒ โญ ์ถ”์ฒœ ๊ฐ•์ขŒ
๐ŸŽฌ ์˜์ƒ ๊ฐ•์ขŒ
๐Ÿ“– ๊ฐ•์ขŒ ๋‚ด์šฉ
# 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
```