SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Столбец 'user_id' не может быть нулевой ошибкой при назначении значения ключа forien? - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу присвоить значение внешнего ключа.внешний ключ user_id в таблице p_members.Оригинальный ключ userId в таблице all_users.Но когда я пытаюсь это сделать, возникает следующая ошибка.

Я создаю две отдельные таблицы для получения сведений о пользователе и получения p-member сведений.

Я новичок в Laravel.

Ошибка:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'user_id' не может быть нулевым (SQL: вставить в `p_members` (` addNo`), `addStreet`,` addCity`, `intentToJoin`,` user_id`, `updated_at`,` creation_at`) значения (qwertfgyhj, ertfyguhj, erdftgyhuj, ertfgyhjk,, 2018-09-06 16:38:19, 2018-09-06 16:38:19))

Мой контроллер:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\allUser;
use App\ORFOL;
use App\pMember;

class userController extends Controller
{
    public function storeUsers(Request $request){
            $table1=new allUser();


            $table1->nameWithInitials = $request->input('name');
            $table1->callingName      = $request->input('callingName');
            $table1->email            = $request->input('email');
            $table1->NIC              = $request->input('nic');
            $table1->contactNo        = $request->input('contactNo');
            $table1->password         = bcrypt($request->input('password'));
            $table1->type             = $request->input('type');

            $table1->save();


        if($request->input('type') == 'P-Member'){
            $table2=new pMember();

            $table2->addNo            = $request->input('addNo');
            $table2->addStreet        = $request->input('addStreet');
            $table2->addCity          = $request->input('addCity');
            $table2->intentToJoin     = $request->input('intentToJoin');

            $table2->user_id          = $table1->userId;

            $table2->save();
            return view('familyMember');

        }

        if(($request->input('type')) =='OR-FOL' ){
            $table3=new ORFOL();

            $table3->region           = $request->input('region');
            $table3->user_id          = $table1->userId;

            $table3->save();

        }

        if(($request->input('type')) =='' ){
            $table3=new ORFOL();

            $table3->region           = $request->input('region');
            $table2->user_id          = $table1->userId;

            $table3->save();

        }


        return redirect()->back();
    }
}

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Введите в вашей модели:

protected $primaryKey = 'userId';
0 голосов
/ 06 сентября 2018

Эта ошибка возникает из-за того, что значение user_id не отправляется, оно может быть нулевым или неопределенным.

$table2->user_id          = $table1->userId; //problem here

$table2->save();

выше смотрите ваши последние две строки

Перед сохранением попробуйте dd() user_id

вот так: dd($table1->userId) перед сохранением.

или

Примечание: это позволит избежать ошибок, но даст вам возможность писать без user_id

Вы можете позволить user_id в ваших миграциях обнуляться

пример: $table->string('user_id')->nullable();

после этого запуска: php artisan migrate:refresh

0 голосов
/ 06 сентября 2018

Вы пытаетесь получить userId из $table1 в $table1->userId, убедитесь, что у вас есть атрибут внутри allUser модели.

И убедитесь, что user_id внутри pMember модели под $fillable с другими атрибутами, такими как:

protected $fillable = [ 'addNo', 'addStreet', 'addCity', 'intentToJoin', 'user_id', ...];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...