sqlstate[23000]:完整性约束冲突:分配forien键值时,1048列“user\u id”不能为空错误?

rqdpfwrv  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(419)

我想分配外键值。外键为 user_idp_members table。原始密钥是中的userid all_users table。但当我尝试这样做时,会出现以下错误。
我创建了两个单独的表来获取用户详细信息并 p-member 细节。
我是拉威尔的初学者。
错误:
sqlstate[23000]:完整性约束冲突:1048列'user\u id'不能为null(sql:insert into'p\u members'('addno'、'addstreet'、'addcity'、'intenttojoin'、'user\u id'、'updated\u at'、'created\u at')值(qwertfgyhj、ertfyguhj、erdftgyhuj、ertfgyhjk,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();
    }
}
f45qwnt8

f45qwnt81#

你想得到 userId$table1$table1->userId ,确保在 allUser 模型。
确保 user_id 内部 pMember 模型下的 $fillable 其他属性包括:

protected $fillable = [ 'addNo', 'addStreet', 'addCity', 'intentToJoin', 'user_id', ...];
ef1yzkbh

ef1yzkbh2#

发生此错误的原因是 user_id 值未被发送,它可能为空或未定义。

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

$table2->save();

上面看到你的最后两行了吗
保存之前,请尝试 dd() 这个 user_id 这样地: dd($table1->userId) 在保存之前。
或者
注意:这样做可以避免错误,但是可以让您在没有错误的情况下进行编写 user_id 你可以让 user_id 在您的迁移中可以为null
例子: $table->string('user_id')->nullable(); 在那次跑步之后: php artisan migrate:refresh

hpcdzsge

hpcdzsge3#

放入您的模型:

protected $primaryKey = 'userId';

相关问题