web-dev-qa-db-fra.com

Laravel existe-t-il un moyen d'ajouter des valeurs à un tableau de requêtes?

Je rencontre une situation dans Laravel lors de l'appel d'une méthode store () ou update () avec le paramètre Request pour ajouter une valeur supplémentaire à la demande avant d'appeler des fonctions Eloquent. Il n'y a aucun moyen de le faire.

function store(Request $request) 
{
  // some additional logic or checking
  User::create($request->all());
}
33

Généralement, vous ne voulez rien ajouter à un objet Request, il est préférable d'utiliser la collection et put() helper

function store(Request $request) 
{
    // some additional logic or checking
    User::create(array_merge($request->all(), ['index' => 'value']));
}

Ou vous pourriez tableau des syndicats :

User::create($request->all() + ['index' => 'value']);

Mais si vous voulez vraiment ajouter quelque chose à un objet Request, procédez comme suit:

$request->request->add(['variable' => 'value']); //add request
77
Alexey Mezenin

En référence à Alexey Mezenin réponse:

En utilisant sa réponse, je devais ajouter quelque chose directement à l'objet Request et utiliser:

$request->request->add(['variable', 'value']);

En utilisant cela, il ajoute deux variables: 

$request[0] = 'variable', $request[1] = 'value'

Si vous êtes un débutant comme moi et que vous avez besoin d’un tableau d’associés, la bonne façon de le faire est de: 

$request->request->add(['variable' => 'value']);

J'espère que j'ai économisé du temps

PS: Merci @Alexey, vous m'avez vraiment aidé avec votre réponse

31
mushood badulla

J'ai essayé la fonction $request->merge($array) dans Laravel 5.2 et cela fonctionne parfaitement.

Exemple:

$request->merge(["key"=>"value"]);
12
Ferhat KOÇER

Dans laravel 5.6, nous pouvons passer des paramètres entre middlewares, par exemple:

Premier moyen

public function handle($request, Closure $next, ...$params)
{
    //some code
    return $next($request->merge(['key' => 'value']));
}

Deuxième moyen

public function handle($request, Closure $next, ...$params)
{
    //some code
    dd($request->all());
}
9
Wiicho Orozco

assez dit à ce sujet mais je ne pouvais pas résister à ajouter ma propre réponse. Je crois que l'approche la plus simple est

request()->merge([ 'foo' => 'bar' ]);
6
fayz

Pour ajouter un nouveau paramètre pour ex: newParam à l'objet Request en cours, vous pouvez effectuer les opérations suivantes:

$newParam = "paramvalue";
$request->request->add(['newParam' => $newParam]);

Après avoir ajouté le nouveau paramètre, vous pourrez voir ce paramètre ajouté à l’objet Request de la manière suivante:

dd($request);//prints the contents of the Request object
2
Rahul Gupta

J'ai utilisé ce code pour ajouter quelque chose à ma demande.

$req->query->add(['key'=>'variable']);
$req->request->add(['key'=>'variable']);
1
Reza Azami

Vous pouvez accéder directement au tableau de requêtes avec $request['key'] = 'value';

0
Kreshnik