2016-05-13 8 views
0

Was ich versuche zu erreichen ist: Benutzer erstellen eine Lieferung durch eine Titeleingabe,
Wenn der Benutzer die Anfrage senden möchte ich die users_id, um es als Fremd zu Liefertabelle hinzufügen Schlüssel. Hier ist die Lieferungen TabelleHinzufügen Fremdschlüssel zur Anfrage Laravel

 public function up() 
{ 
    Schema::create('deliveries', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title'); 
     $table->integer('users_id')->unsigned(); 
     $table->timestamps(); 
    }); 

    Schema::table('deliveries', function ($table) { 


     $table->foreign('users_id')->references('id')->on('users'); 
    }); 
} 

hier ist die DeliveryController

<?php 

    namespace App\Http\Controllers; 

    use Illuminate\Http\Request; 

    use App\Http\Requests; 

    use App\User; 

    class DeliveryController extends Controller 
    { 
     public function index() 
     { 
      return view('delivery.index'); 
     } 

     public function create() 
     { 
      return view('delivery.create'); 
     } 

     public function store(Request $request) 
     { 
      $this->validate($request, [ 
      'title' => 'required' 
      ]); 

      $input = $request->all(); 

      $input['users_id'] = Auth::user()->id; 

      Delivery::create($input); 

      return redirect()->back(); 
     } 

    } 
+2

Also, was ist das Problem? –

Antwort

0

Nach Wochen der Forschungen fand ich, dass mein Controller diese Zeile fehlt:

use Illuminate\Support\Facades\Input; 
0

Sie können auf zwei Arten tun

Way 1) Holen Sie sich das user_id und setzen Sie sie manuell wie:

$user_id = User::select('id')->where('id',$request->user()->id)->get(); 
Or use this bit to get the current loggedin user_id : $request->user()->id 

Weg 2) Verwenden Sie redegewandte Modelle

Erstellen Sie eine Beziehung im Benutzermodell wie: hasMany, ManyToMany oder OneToOne, je nachdem, welche für Sie arbeitet.

public function deliveries() 
    { 
     return $this->hasMany('App\User'); 
    } 

Und einfach diese $user->deliveries() rufen user_id automatisch einzufügen.

Ich denke, das Problem mit dem Code hier:

$input = $request->all(); 

$input['users_id'] = Auth::user()->id; 

Delivery::create($input); 

Können Sie dies versuchen:

$delivery= new Delivery;//here Delivery is the Model name 
$delivery->title   = Input::get('title'); 
$delivery->user_id  = $request->user()->id; 
$delivery->save();