Merhaba dostlar,
user ve userCommunicationPreference tablolarım arasında one to one relation kullanıyorum. Sisteme yeni bir kullanıcı kayıt olduğunda dolayısıyla preference tablomda kullanıcıya ait bir kayıt bulunmuyor. bunu ayarlar sayfasına girdiğinde oluşturmak istiyorum. relation yoksa null gelen değer için yeni bir kayıt oluşturuyorum. Buraya kadar problem yok. Fakat aynı methodu yine aynı kullanıcı için ayarlarını güncellesin diye kullanmak istediğimde
General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into user_communication_preferences şeklinde bir hata mesajı alıyorum. isteği javascriptin fetch methodu ile atıyorum.
$preferences->update ... bloğunda bu hatayı vermesinin sebebi nedir. user_id boş değil. değer var.
public function storeCommunicationPreferences(Request $request): JsonResponse
{
$user = $request->user();
$preferences = UserCommunicationPreference::where('user_id', $user->id)->first();
if ($preferences === null) {
$new = new UserCommunicationPreference();
$new->create([
'user_id' => $user->id,
'sms' => $request->input('sms'),
'email' => $request->input('email'),
'mobile' => $request->input('mobile')
]);
}
$preferences
->update([
'user_id' => $user->id,
'sms' => $request->input('sms'),
'email' => $request->input('email'),
'mobile' => $request->input('mobile')
]);
return response()->json([
'message' => 'Bildirim tercihiniz başarıyla değiştirildi.'
]);
}