Метод merge
Метод merge класса Request применяется к объекту запроса и позволяет объединить массив данных с существующими данными запроса. Первым параметром передаётся ассоциативный массив данных, которые будут добавлены или перезапишут существующие ключи в запросе. Метод возвращает изменённый объект запроса, позволяя использовать цепочки методов.
Синтаксис
<?php
$request->merge(array $data);
?>
Пример
Давайте добавим в запрос новое поле 'role' со значением 'admin':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request)
{
$request->merge(['role' => 'admin']);
$res = $request->all();
echo json_encode($res);
}
}
?>
Результат выполнения кода:
{"name":"John","email":"john@mail.com","role":"admin"}
Пример
Давайте перезапишем существующее поле 'status' на новое значение 'active':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function update(Request $request)
{
$request->merge(['status' => 'active']);
$res = $request->only(['status', 'title']);
echo json_encode($res);
}
}
?>
Результат выполнения кода:
{"status":"active","title":"New Post"}
Пример
Давайте объединим несколько полей в запросе с помощью одного вызова метода:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
public function update(Request $request)
{
$request->merge([
'updated_at' => now()->toDateTimeString(),
'is_verified' => true
]);
$res = $request->only(['name', 'updated_at', 'is_verified']);
echo json_encode($res);
}
}
?>
Результат выполнения кода:
{"name":"Jane","updated_at":"2026-09-08 10:30:00","is_verified":true}
Пример
Давайте используем метод merge вместе с другими методами для обработки запроса:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function store(Request $request)
{
$request->merge([
'user_id' => auth()->id(),
'published' => false
]);
$res = $request->only(['title', 'content', 'user_id', 'published']);
// $res now contains merged data
return json_encode($res);
}
}
?>
Результат выполнения кода:
{"title":"New Article","content":"Article content","user_id":1,"published":false}