我有2个表:用户和需求。用户可以有任意数量的需求。在需求表中,有用户外键。
当用户填写表格时,我将用户和需求信息放在这两个表中。
但是我不知道如何将用户ID放入需求表中。
这是控制器内部的功能:
public function store(Request $request){
$demand = new Demand;
$user = new user ;
$user ->numStudent= $request->NumStudent;
$user ->role_id = "3";
$user ->Lastname = $request->LastName;
$user ->FirstName= $request->FirstName;
$user ->numero_etudiant = "12345678";
$user ->email = $request->Email;
$user ->password = bcrypt('idk');
$user ->adress= $request->Adress;
$user ->phone = $request->Phone;
$user ->parcours = $request->Parcours;
$demand->status_id= "3";
//problem below
$demand->User_id= $User;
//
$demand->time_id = $request->LoanTime;
$demand->creation_date = $request->CreationDate;
$demand->comments = "";
$user ->save();
$demand->save();
return redirect('/demands_list');
}
但是它说“在写上下文中不能使用方法返回值”。
私下
答案 0 :(得分:1)
您必须先保存用户的实例,然后才能使用其属性。您的代码应如下所示。
public function store(Request $request){
$demand = new Demand;
$user = new user ;
$user->numStudent= $request->NumStudent;
$user->role_id = "3";
$user->Lastname = $request->LastName;
$user->FirstName= $request->FirstName;
$user->numero_etudiant = "12345678";
$user->email = $request->Email;
$user->password = bcrypt('idk');
$user->adress= $request->Adress;
$user->phone = $request->Phone;
$user->parcours = $request->Parcours;
$user->save();
$demand->status_id= "3";
//problem below
$demand->User_id= $user->id;
//
$demand->time_id = $request->LoanTime;
$demand->creation_date = $request->CreationDate;
$demand->comments = "";
$demand->save();
return redirect('/demands_list');
}
答案 1 :(得分:0)
根据您的标签,您正在寻找一种口才(即Laravel)的实现方式。
简短的答案:使用 route model binding ,并使您的控制器方法井井有条,一目了然。
已经answered,您的User
需要先保存。我建议您在其自己的控制器中执行此步骤:
// UsersController.php
public function store(Request $request) {
$attributes = $request->validate([
// validation rules
]);
$user = User::create($attributes);
return redirect('/users/' . $user->id);
}
现在您已经创建了User
,然后可以附加相关模型。创建一组单独的路由,这些路由指向用于处理该关系的单独控制器:
// routes/web.php
Route::get('/user/{user}/demands', 'UserDemandsController@index');
Route::post('/user/{user}/demands', 'UserDemandsController@store');
// ^^^^^^
// used with route model binding
这是路线模型绑定的作用,直接从路线参数({user}
)中加载模型:
// UserDemandsController.php
public function store(Request $request, User $user) { // <-- ROUTE MODEL BINDING
$attributes = $request->validate([
// validation rules
]);
$user->demands()->create($attributes);
}
结果是非常干净,简单的代码。