im используя Laravel 5.3 и ive простой контроллер с методом «store», это сторона отношений «принадлежит». Другие модели содержат правильную функцию hasMany.associate() и 1tomany странное поведение
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», а затем случайная строка, идентификатор взятый вставкой как 2, это правильно? Подтверждение занимает только «правильное» числовое число данных ... вопрос в том, почему? и это безопасно?
спасибо много, так что около 1) нужно ли мне ставить только если записи на ребенке нуждается модель должны быть созданы? – JahStation
около 2) Я могу проверить входные данные, чтобы решить эту проблему? – JahStation
Да, этот метод 'save()' будет запускать запрос, поэтому я бы этого не сделал, если вы на самом деле ничего не делаете. Во втором выпуске вы можете проверить проблему, чтобы решить эту проблему. Я также предлагаю установить MySQL в строгом режиме, по крайней мере, при разработке и обеспечении того, чтобы ограничения внешнего ключа обеспечивали целостность данных, которые вам нужны – user3158900