2016-05-13 98 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();