我使用Laravel 5.3和ive一个带有“store”方法的简单控制器,这是关系的“belongsTo”方面。 其他2个模型正确包含“hasMany”功能。
public function store(Request $request)
{
$user_id = JWTAuth::parseToken()->authenticate()->id;
if(!Vehicle::where('id', '=', $request->vehicle_id)->exists()){
return $this->response->error('could_not_create_trip_errore_veicolo', 500);
}
if(!Ztl::where('id', '=', $request->ztl_id)->exists()){
return $this->response->error('could_not_create_trip_errore_ztl', 500);
}
$request->request->add(['user_id' => $user_id]);
$trip = new Trip($request->all());
//$trip->user()->associate($request->user_id);
//$trip->vehicle()->associate($request->vehicle_id);
//$trip->ztl()->associate($request->ztl_id);
if(true)
{
if($trip->save()){
return $this->response->created();
}else return $this->response->error('could_not_create_trip', 500);
}else return $this->response->error('could_not_create_trip_current_user_Error', 500);
}
第一个问题是: 为什么如果评论或取消注释“关联”方法,没有任何改变。 我是否需要将这些放在控制器上,或者我不知道这种方法的含义是什么。
第二:
如果我向控制器发送一些数据,使用表格进行测试,“需要”的是3个外键。
如果我发送的数字不在我的其他“hasmany”表中,则会出现错误,但如果尝试插入类似"2dsksk"
的内容,其中2是“many”表的正确ID,然后是随机字符串,插入ID为2,这是正确的吗?
验证只需要数据的“正确”数字部分......问题是,为什么?这是安全的吗?
答案 0 :(得分:1)
associate
只设置孩子的外键。这意味着您之后需要保存模型。
$trip->user()->associate($request->user_id);
$trip->save();
对于第二个问题,可能是MySQL根据列的数据类型截断数据。如果您不希望这种情况发生,您可能需要将MySQL设置为严格模式。
http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict