2016-05-13 106 views
0

我想實現的是: 用戶通過標題輸入創建一個遞送,
當用戶發送請求時,我想讓users_id將它作爲外部添加到遞送表中鍵。 這裏是交付表添加外鍵請求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'); 
    }); 
} 

這裏是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

那麼問題是什麼? –

回答

0

研究的幾個星期後,我發現我的控制器中缺少這一行:

use Illuminate\Support\Facades\Input; 
0

您可以通過兩種方式

方式1)獲取USER_ID和手動插入它像:

$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 

方式2)使用雄辯模型

在用戶模型中創建關係,例如:hasMany,ManyToMany或OneToOne,具體取決於適用於您的關係。

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

,只需調用這個$user->deliveries()自動插入user_id

我猜你的代碼的問題在這裏:

$input = $request->all(); 

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

Delivery::create($input); 

你可以試試這個:

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