2016-07-19 5 views
0

Ich benutze diese Methode neue Zeile in der DB zu erstellen:Wie setze ich field für :: create in Laravel?

$input = $request->all(); 
return Recipient::create([$input]); 

Wie ich zusätzliches Feld zu $input mit einem Wert hinzufügen kann?

Ich habe versucht:

$input["user_id"] = Auth::id(); 

Aber wenn ich Abfrage INSERT angezeigt werden, kann ich nicht Feld user_id

+0

Sie möchten Spalte zur Tabelle hinzufügen? –

+0

Nein Ich möchte ein neues Eingabefeld in '$ input = $ request-> all();' Dieses Feld wird in der Anfrage nicht übertragen, sondern existiert in der Tabelle – Dev

Antwort

4

Das Problem hierbei ist, dass Sie wahrscheinlich nicht gesetzt haben $fillable Immobilien in Recipient Modell. Sie sollten user_id dort hinzufügen:

$fillable = [ ..., 'user_id']; 

jedoch Eingang Verschmelzung ist in der Regel nicht der beste Weg, mit solchen Dingen zu beschäftigen. Wenn Sie Beziehungen richtig eingestellt haben, sollte es möglich sein, Folgendes zu tun:

0

Ich bin immer noch nicht sicher, was genau Sie suchen. Angenommen, Sie haben 2-3 Felder user_id, title, content. Zum Einfügen in die Datenbank müssen Sie folgende Schritte ausführen:

Es werden zwei Felder mit der inkrementierten user_id gespeichert.

0

Bro, Sie verwenden falsche Methode, versuchen diese:

$input["user_id"] =Auth::user()->id; 
1

aktualisieren

Wie @Marcin Nabialek sagte: add 'user_id' zum $fillable Array. Und seine Lösung ist sauberer.

Merge

Die Methode merge ist das, was Sie suchen: Merge new input into the current request's input array.

$request->merge(['user_id' => Auth::user()->id]); 
Recipient::create($request->all()); 

der API-Dokumentation hier ansehen: https://laravel.com/api/5.2/Illuminate/Http/Request.html#method_merge