> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026년 6월 Laravel 업데이트

> 2026년 6월 Laravel 에코시스템 업데이트. Bus::bulk(), Postgres 트랜잭션 풀러 지원, MCP 클라이언트/서버, artisan dev 명령, 라우트 메타데이터 등.

2026년 6월에는 Laravel Cloud가 Symfony 앱을 지원하고, Forge에 관리형 Valkey 캐시와 오브젝트 스토리지가 추가되었습니다. 프레임워크에는 벌크 잡 디스패치, Postgres 풀러 지원, MCP 클라이언트/서버 등 알찬 업데이트가 도착했습니다.

출처: [Laravel June Product Updates](https://laravel.com/blog/laravel-june-product-updates)

***

## Laravel Framework

### Bus::bulk() — 벌크 잡 디스패치

대량의 잡을 1회의 데이터베이스 INSERT로 등록할 수 있게 되었습니다. 큐 · 커넥션별로 벌크 INSERT가 이루어지므로, 1건씩 INSERT하는 비용이 불필요해집니다.

```php theme={null}
use Illuminate\Support\Facades\Bus;

Bus::bulk([
    new ProcessOrder($order1),
    new ProcessOrder($order2),
    new ProcessOrder($order3),
    // 수천 건이라도 효율적
]);
```

### Postgres 트랜잭션 풀러 지원

PgBouncer, AWS RDS Proxy, Neon 등 트랜잭션 모드의 Postgres 접속 풀러를 프레임워크 레벨에서 지원했습니다.

```php theme={null}
// config/database.php
'pgsql' => [
    'driver' => 'pgsql',
    'pooled' => true,  // 풀러 경유의 접속을 선언
    // ...
],
```

<Info>
  스키마 조작이나 DDL 문 등 직접 접속이 필요한 경우, 커넥션 이름에 `::direct`를 추가하면 풀러를 바이패스합니다.
  `DB::connection('pgsql::direct')->statement('CREATE INDEX ...')`
</Info>

프레임워크가 자동으로 emulated prepares, boolean binding, 그 외 풀러에 필요한 모든 처리를 수행합니다.

### MCP 클라이언트 · 서버 툴 지원

Laravel AI 에이전트가 원격 MCP 서버(HTTP 경유)와 로컬 MCP 서버 클래스의 툴을 이용할 수 있게 되었습니다. 스키마 변환, 래핑, 호출이 모두 자동으로 처리됩니다.

```php theme={null}
class MyAgent extends Agent
{
    public function tools(): array
    {
        return [
            // 원격 MCP 서버의 툴 이용
            McpClient::tools('https://mcp.example.com'),
            // 로컬 MCP 서버의 툴 이용
            McpServer::tools(MyMcpServer::class),
        ];
    }
}
```

### artisan dev 명령

모든 개발 프로세스를 하나의 명령으로 시작할 수 있는 `artisan dev`가 추가되었습니다. 서버, 큐 워커, 로그 테일링, Vite가 각각 색상 코드가 있는 출력으로 동시에 동작합니다.

```bash theme={null}
php artisan dev
```

```php theme={null}
// 서비스 프로바이더에서 추가 명령 등록
use Illuminate\Foundation\Console\DevCommands;

DevCommands::artisan('reverb:start', 'reverb')->orange();
DevCommands::register('stripe listen --forward-to ' . config('app.url'))->green();
```

<Tip>
  Node.js 패키지 매니저(npm, yarn, pnpm, bun)를 자동 감지합니다. 기존의 `composer dev` 스크립트를 대체하는 Artisan의 공식 컨벤션입니다.
</Tip>

### 라우트 메타데이터 지원

라우트에 임의의 메타데이터를 부여할 수 있는 `->metadata()` 메서드가 추가되었습니다. 라우트 캐시와도 완전 호환이며, 그룹에 설정된 메타데이터는 자식 라우트에 병합됩니다.

```php theme={null}
Route::metadata(['head' => ['robots' => ['noindex'], 'author' => 'Taylor']])
    ->group(function () {
        Route::get('/users', [UserController::class, 'index'])
            ->metadata(['head' => ['title' => 'Users']]);
    });

// 컨트롤러나 미들웨어에서 접근
$request->route()->getMetadata('head.title');          // 'Users'
$request->route()->getMetadata('head.author', 'Taylor'); // 'Taylor'
```

### 재시도하지 않는 예외 핸들러

재시도해도 의미가 없는 예외(잘못된 입력, 영구적인 외부 장애 등)에 대해 재시도를 억제할 수 있게 되었습니다.

```php theme={null}
// 예외 클래스에 직접 정의
class InvalidInputException extends RuntimeException
{
    public function retry(): bool
    {
        return false;
    }
}

// bootstrap/app.php에서도 설정 가능
->withExceptions(function (Exceptions $exceptions) {
    $exceptions->dontRetry(InvalidInputException::class);
})
```

### schema:dump의 --without-migration-data 플래그

`schema:dump`에서 마이그레이션 테이블의 행을 생략한 순수한 구조 덤프를 생성할 수 있게 되었습니다.

```bash theme={null}
php artisan schema:dump --without-migration-data
```

### between()/unlessBetween()의 타임존 수정

`between()`이나 `unlessBetween()` 앞에 `timezone()`을 호출하는 순서와 무관하게, 올바른 타임존으로 스케줄이 동작하도록 되었습니다.

```php theme={null}
// 둘 다 같은 동작을 함 (이전에는 between을 먼저 쓰면 UTC가 사용되는 문제가 있었음)
$schedule->command('foo')->timezone('Europe/Rome')->between('10:00', '12:00');
$schedule->command('foo')->between('10:00', '12:00')->timezone('Europe/Rome');
```

### 그 외 프레임워크 변경

* **`Bus::bulk()`의 트레이트 대응**: 트레이트에 큐 어트리뷰트 정의 가능
* **MariaDB 벡터 인덱스**: MariaDB에서 벡터 인덱스 지원
* **`attachFromStorage()` 헬퍼**: 알림의 `MailMessage`에 스토리지에서 첨부 파일 추가
* **`Cache::rememberWithState()`**: 상태를 가진 캐시 지원
* **병렬 테스트용 메인터넌스 모드 드라이버**: `array` 드라이버로 각 프로세스가 독립된 메인터넌스 상태를 가질 수 있음
* **`whenFilledEnum()`**: Enum을 사용한 필드의 조건부 처리
* **JSON Schema의 anyOf 지원**: 유효성 검증에서 JSON Schema의 `anyOf` 사용 가능

***

## Inertia

* **`Client\Request::uri()`**: 클라이언트 요청 URI 취득
* **앵커의 `target` 속성 지원**: `<Link>` 컴포넌트에서 `target="_blank"` 등 사용 가능
* **폼의 `async` 옵션**: 폼 컴포넌트에서 비동기 송신 지원
* **`titleCallback`에 페이지 정보**: 타이틀 콜백에 페이지 데이터가 전달됨

***

## Laravel Cloud · Laravel Forge

| 제품                | 주요 업데이트                                                                                                        |
| ----------------- | -------------------------------------------------------------------------------------------------------------- |
| **Laravel Cloud** | Symfony 앱 완전 지원 (Symfony 7.4 LTS · 8.x, PHP 8.2\~8.5 대응), Stripe Projects로부터의 배포 · 결제 대응, 팀 멤버별 Slack/메일 알림 설정 |
| **Laravel Forge** | 관리형 Valkey 캐시 (대시보드에서 생성 · 관리), 관리형 오브젝트 스토리지, 알림 메일 리디자인                                                      |


## Related topics

- [2026년 3월 Laravel 업데이트](/ko/blog/changelog/202603.md)
- [2026년 4월 Laravel 업데이트](/ko/blog/changelog/202604.md)
- [2026년 5월 Laravel 업데이트](/ko/blog/changelog/202605.md)
- [Laravel 13 신기능 정리](/ko/blog/laravel-13-new-features.md)
- [Laravel Wayfinder 소개](/ko/blog/wayfinder-introduction.md)
