Gibt es in Laravel eine Möglichkeit, einem Anfrage-Array Werte hinzuzufügen?

Lesezeit: 4 Minuten

Benutzer-Avatar
Vijayanand Premnath

Ich stoße in Laravel auf eine Situation, während ich eine store()- oder update()-Methode mit Request-Parameter aufrufe, um der Anfrage einen zusätzlichen Wert hinzuzufügen, bevor Eloquent-Funktionen aufgerufen werden. Gibt es dafür eine Möglichkeit.

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

  • Welche Art von Behandlung möchten Sie durchführen? Möchten Sie Schlüsselwerte hinzufügen $request->all() Reihe?

    – Hammerbot

    9. Mai 2016 um 4:50 Uhr

  • Ja, ich muss einen Schlüsselwert hinzufügen

    – Vijayanand Premnath

    9. Mai 2016 um 4:51 Uhr

  • Kannst du die nicht benutzen array_add() Helfer? $array = array_add($request->all(), 'new_key', $value);: laravel.com/docs/5.2/helpers#method-array-add Wenn dies nicht das ist, wonach Sie suchen, könnten Sie weitere Informationen zu Ihrer Frage bereitstellen?

    – Hammerbot

    9. Mai 2016 um 4:56 Uhr

  • $request ist nach meinem Verständnis ein PHP-Objekt. Wenn Sie dem Controller einige Funktionen hinzufügen möchten, konvertieren Sie das Anforderungsobjekt in ein Array und fügen Sie dann hinzu, was immer Sie möchten

    – Chathura Hettiarachchi

    9. Mai 2016 um 5:11 Uhr

Benutzer-Avatar
Alexey Mezenin

Normalerweise möchten Sie einem Request-Objekt nichts hinzufügen, es ist besser, Sammlung und zu verwenden put() Helfer:

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

Oder du könntest Union-Arrays:

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

Aber wenn Sie wirklich etwas zu einem Request-Objekt hinzufügen möchten, tun Sie dies:

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

  • Ja, es funktioniert jetzt für mich. Ich habe den Code als Funktion geändert store(Request $request) { // etwas zusätzliche Logik oder Überprüfung $plan = 123; // etwas Logik um den Plan des Benutzers festzulegen $request->request->add([‘plan’ => $plan]); User::create($request->all()); }

    – Vijayanand Premnath

    9. Mai 2016 um 6:21 Uhr


  • Dies funktioniert nicht, weil $request->all() ein Array und keine Sammlung ist.

    – kjdion84

    25. Juni 2017 um 23:24 Uhr

  • Ich denke, es muss $request->request->add([‘variable’ => ‘value’]);

    – Sergej Onischtschenko

    13. Juli 2018 um 6:32 Uhr

  • $request->request->add … Ich bekam die Fehlermeldung 「Undefined variable: request 」 Aber ich hatte die 「use Illuminate\Http\Request;」warum bekam ich die Fehlermeldung?

    – Robspin

    17. November 2018 um 3:55 Uhr

  • Muss ich $request=collect(); Erste? Ist $request eine Sammlung oder ein Array?

    – Robspin

    17. November 2018 um 4:01 Uhr

Benutzer-Avatar
mushood badulla

In Bezug auf Alexey Mezenin Antworten:

Während ich seine Antwort verwendete, musste ich etwas direkt zum Request-Objekt hinzufügen und verwendete:

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

Damit fügt es zwei Variablen hinzu:

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

Wenn Sie ein Neuling wie ich sind und ein Associate-Array benötigen, ist dies der richtige Weg

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

Hoffe, ich habe dir etwas Zeit gespart

PS: Danke @Alexeydu hast mir mit deiner Antwort wirklich weitergeholfen

  • $request->request->add … Ich bekam die Fehlermeldung 「Undefined variable: request 」 Aber ich hatte die 「use Illuminate\Http\Request;」warum bekam ich die Fehlermeldung?

    – Robspin

    17. November 2018 um 3:49 Uhr

  • @robspin Ich denke, es ist ziemlich spät, aber Sie haben die Anfrage wahrscheinlich nicht in die Funktion eingefügt, z. B.: function (Request $request)

    – Mushood Badulla

    25. Januar 2019 um 4:25 Uhr

  • Für diejenigen unter Ihnen, die suchen, warum Ihr Wert nicht in die Datenbank eingefügt wird, da ich diesen Wert der Datenbank nicht in meiner deklariert habe Model Klasse als: protected $fillable = ['slug'];

    – fWd82

    2. September 2020 um 10:12 Uhr

Ich habe es versucht $request->merge($array) funktionieren in Laravel 5.2 und es funktioniert perfekt.

Beispiel:

$request->merge(["key"=>"value"]);

  • Dies sollte als gültige Antwort markiert werden. Funktioniert in Laravel 9. Dies funktioniert nicht mehr in Laravel 9: $request->request->add([‘variable’ => ‘value’]);

    – John Smith

    17. Februar um 10:10 Uhr

Zu diesem Thema wurde genug gesagt, aber ich konnte nicht widerstehen, meine eigene Antwort hinzuzufügen. Ich glaube, der einfachste Ansatz ist

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

Benutzer-Avatar
cosminpanait

Sie können auch den folgenden Code verwenden

$request->request->set(key, value).

Passt für mich besser.

  • Zumindest bei Laravel 5.6 wird das so gemacht! Gute Antwort

    – Rockin4Life33

    13. August 2018 um 21:28 Uhr

Benutzer-Avatar
Wiicho Orozco

In Laravel 5.6 können wir zum Beispiel Parameter zwischen Middlewares übergeben:

FirstMiddleware

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

ZweiteMiddleware

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

  • Zumindest bei Laravel 5.6 wird das so gemacht! Gute Antwort

    – Rockin4Life33

    13. August 2018 um 21:28 Uhr

Verwenden Sie einfach dies: –

$request->merge(['index' => 'value']);

arbeite für mich

Dadurch wird Ihrem Anforderungsobjekt mit dem angegebenen Index ein neuer Wert hinzugefügt, den Sie in Ihrer Funktion oder beim Speichern aller Anforderungsdaten in der Datenbank verwenden können.

  • Ihre Antwort könnte verbessert werden, indem Sie weitere Informationen darüber hinzufügen, was der Code tut und wie er dem OP hilft.

    – Tyler2P

    6. Dezember 2021 um 15:51 Uhr

1018630cookie-checkGibt es in Laravel eine Möglichkeit, einem Anfrage-Array Werte hinzuzufügen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy