Нарушение ограничения целостности: 1048 столбец - PullRequest
0 голосов
/ 05 июня 2019

введите описание изображения здесь

введите описание изображения здесь

Здравствуйте! У меня ошибка в базе данных. пользователь регистрируется в таблице пользователей, и теперь он должен опубликовать объявление. Я пытаюсь получить его идентификатор в таблице объявлений. Но он возвращает мне эту ошибку:

SQLSTATE [23000]: нарушение ограничения целостности: столбец 1048 'user_id' не может быть нулевым (SQL: вставить в ads (user_id, services, head, level_study, language, experience, localization, description, contact, updated_at, created_at) значения (?, домашнее хозяйство, экономка, BAC + 2, немного, 2 года, Йопугон, pnjjjk, 09789070, 2019-06-05 08:31:38, 2019-06-05 8:31:38))

public function store(Adstore $request)
{
    $validated = $request->validated();
    $user_id = Auth::user()['id'];
    $ad = new Ad();
    $ad->user_id = $user_id;
    $ad->services = $validated['dropdown_service'];
    $ad->titre = $validated['title'];
    $ad->niveau_etude = $validated['dropdown_etude'];
    $ad->langue = $validated['langue'];
    $ad->experience = $validated ['experience'];
    $ad->localisation = $validated ['local'];
    $ad->description = $validated ['description'];
    $ad->contact = $validated ['contact'];
    $ad->save();
    return redirect()->route('accueil')->with('success','Votre annonce a été postée.');
}

Ответы [ 3 ]

0 голосов
/ 06 июня 2019

Вы должны получить доступ к идентификатору пользователя авторизации, например: $ user_id = Auth :: user () -> id;

0 голосов
/ 06 июня 2019

Вместо "$ user_id = Auth :: user () ['id'];"используйте это: "$ user_id = Auth :: user () -> id;"это будет работать.

0 голосов
/ 06 июня 2019

Внесите некоторые изменения в код, как показано ниже:

В контроллере:

public function store(Adstore $request)
{
    $validated = $request->validated();

    $user_id = Auth::user()->id;

    $ad = Ad::create([
        'user_id' => $user_id,        
        'services' => $validated['dropdown_service'],        
        'titre' => $validated['title'],        
        'niveau_etude' => $validated['dropdown_etude'],        
        'langue' => $validated['langue'],        
        'experience' => $validated['experience'],        
        'localisation' => $validated['local'],        
        'description' => $validated['description'],        
        'contact' => $validated['contact'],        
    ]);

    if($ad){
        return redirect()->route('accueil')->with('success','Votre annonce a été postée.');
    } else {
        return redirect()->route('accueil')->with('error','Something went wrong.');
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...