Eloquent 함수를 호출하기 전에 요청에 추가 값을 추가하기 위해 Request 매개 변수를 사용하여 store () 또는 update () 메서드를 호출하는 동안 Laravel에서 상황이 발생했습니다.
function store(Request $request)
{
// some additional logic or checking
User::create($request->all());
}
Eloquent 함수를 호출하기 전에 요청에 추가 값을 추가하기 위해 Request 매개 변수를 사용하여 store () 또는 update () 메서드를 호출하는 동안 Laravel에서 상황이 발생했습니다.
function store(Request $request)
{
// some additional logic or checking
User::create($request->all());
}
array_add()
도우미 를 사용할 수 없습니까 ? $array = array_add($request->all(), 'new_key', $value);
: laravel.com/docs/5.2/helpers#method-array-add 이것이 당신이 찾고있는 것이 아니라면, 질문에 대한 더 많은 정보를 제공 할 수 있습니까?
답변:
일반적으로 Request 객체에 아무것도 추가하지 않으려는 경우 수집 및 put()
도우미 를 사용하는 것이 좋습니다 .
function store(Request $request)
{
// some additional logic or checking
User::create(array_merge($request->all(), ['index' => 'value']));
}
User::create($request->all() + ['index' => 'value']);
그러나 정말로 Request 객체에 무언가를 추가하고 싶다면 다음과 같이하십시오.
$request->request->add(['variable' => 'value']); //add request
Alexey Mezenin
답변 참조 :
그의 대답을 사용하는 동안 요청 객체에 직접 추가하고 다음을 사용했습니다.
$request->request->add(['variable', 'value']);
이것을 사용하여 두 개의 변수를 추가합니다.
$request[0] = 'variable', $request[1] = 'value'
당신이 나와 같은 초보자이고 동료 배열이 필요하다면 올바른 방법은
$request->request->add(['variable' => 'value']);
시간을 절약했으면 좋겠어
추신 : 감사합니다 @Alexey
, 당신은 정말로 당신의 대답으로 나를 도왔습니다
Model
클래스 에서 데이터베이스의 값을 다음과 같이 선언하지 않았기 때문에 왜 당신의 값이 데이터베이스에 삽입되지 않는지 찾고있는 사람들을 위해 :protected $fillable = ['slug'];
$request->merge($array)
Laravel 5.2에서 기능을 시도했는데 완벽하게 작동합니다.
예:
$request->merge(["key"=>"value"]);
laravel 5.6에서는 미들웨어간에 매개 변수를 전달할 수 있습니다. 예를 들면 다음과 같습니다.
FirstMiddleware
public function handle($request, Closure $next, ...$params)
{
//some code
return $next($request->merge(['key' => 'value']));
}
SecondMiddleware
public function handle($request, Closure $next, ...$params)
{
//some code
dd($request->all());
}
$request->merge()
방법 FTW! 감사.
아래 코드를 사용할 수도 있습니다.
$request->request->set(key, value).
나에게 더 잘 맞습니다.
내 관찰을 바탕으로 :
$request->request->add(['variable' => 'value']);
전달 된 값이 있기 때문에 POST, PUT 및 DELETE 메서드 에서 (대부분) 작동하며 그중 하나는 _token
. 아래 예와 같습니다.
<form action="{{ route('process', $id) }}" method="POST">
@csrf
</form>
public function process(Request $request, $id){
$request->request->add(['id' => $id]);
}
그러나 [코드 아래]는 전달 된 값이 없기 때문에 작동하지 않으며 실제로 추가되지 않습니다.
<a href='{{ route('process', $id) }}'>PROCESS</a>
public function process(Request $request, $id){
$request->request->add(['id' => $id]);
}
public function process($id){
$request = new Request(['id' => $id]);
}
또는 merge
. 이것은 초기화$request->request->add(['variable' => 'value']);
할 수 있고 모든 메서드 ( GET , POST , PUT , DELETE )에서 작동하는 요청 값을 추가 할 수 있기 때문에 실제로 더 좋습니다.
public function process(Request $request, $id){
$request->merge(['id' => $id]);
}
태그 : laravel5.8.11
내가 사용하고 조사한 가장 좋은 것은 $request->merge([])
(Check My Piece of Code)입니다.
public function index(Request $request) {
not_permissions_redirect(have_premission(2));
$filters = (!empty($request->all())) ? true : false;
$request->merge(['type' => 'admin']);
$users = $this->service->getAllUsers($request->all());
$roles = $this->roles->getAllAdminRoles();
return view('users.list', compact(['users', 'roles', 'filters']));
}
인덱스 함수 내부의 3 번 라인을 확인하십시오.
$request->all()
배열 에 키 값을 추가 하시겠습니까?