2016-05-09 7 views
8

Mi imbatto in una situazione in Laravel mentre si chiama un metodo store() o update() con il parametro Request per aggiungere qualche valore aggiuntivo alla richiesta prima di chiamare le funzioni Eloquent qualsiasi modo per quello.Laravel c'è un modo per aggiungere valori a una matrice di richieste

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

Che tipo di trattamento si desidera effettuare? Vuoi aggiungere valori chiave a '$ request-> all()' array? – Hammerbot

+0

Sì, ho bisogno di aggiungere un valore Chiave –

+0

Non puoi usare l'helper 'array_add()'? '$ array = array_add ($ request-> all(), 'new_key', $ value);': https://laravel.com/docs/5.2/helpers#method-array-add Se questo non è il tipo di cosa stai cercando, potresti fornire maggiori informazioni per la tua domanda? – Hammerbot

risposta

20

Di solito, non si vuole aggiungere qualcosa a un oggetto di richiesta, è meglio usare la raccolta e put() aiutante:

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

Oppure si potrebbe union arrays:

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

Ma , se vuoi davvero aggiungere qualcosa a un oggetto Request, fai questo:

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

Sì, sta funzionando per me ora ho cambiato il codice come archivio funzioni (Richiesta $ richiesta) { // qualche logica aggiuntiva o controllo $ plan = 123; // qualche logica per decidere il piano utente $ request-> request-> add (['plan' => $ plan]); Utente :: create ($ request-> all()); } –

+0

Felice di averlo aiutato.) –

+1

Questo non funziona perché $ request-> all() è un array non una collezione. – kjdion84

5

riferimento alla Alexey Mezenin risposta:

Mentre si utilizza la sua risposta, ho dovuto aggiungere un file direttamente alla Object Request e usato:

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

Utilizzando questo aggiunge due variabili:

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

Se sei un principiante come me e hai bisogno di un array associato, il modo corretto per farlo è

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

Speranza ho salvato la po 'di tempo

PS: Grazie @Alexey, mi hai davvero aiutato con la vostra risposta

0

Un altro modo è

$a = $request->all(); 
$a['variable'] = 'value'; 
0

Per aggiungere un nuovo parametro per es: newParam all'attuale oggetto Request, è possibile eseguire:

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

Dopo aver aggiunto il nuovo parametro, si sarebbe in grado di vedere questo parametro appena aggiunto all'oggetto Richiesta:

dd($request);//prints the contents of the Request object 
0

Ho usato questo codice per aggiungere qualcosa alla mia richiesta.

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