SQLSTATE[23000]:违反完整性约束:1452 添加 Auth::user()->campus_id 属性 Laravel 5.5

SQLSTATE[23000]: Integrity constraint violation: 1452 in adding Auth::user()->campus_id attribute Laravel 5.5

我正在做这个查询

$disposes = Disposecollect::create([
    'bag_id' => $request->input('bag_id'),
    'station_id' => $station->id,
    'undisposed_weight' => $weight->weight,
    'disposed_weight' => $weight->weight - $weight->weight,
    'status' => $request->input('status'),
    'campus_id' => Auth::user()->campus_id 
]); 

然后突然报错:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (ecoteneo.disposecollects, CONSTRAINT disposecollects_campus_id_foreign FOREIGN KEY (campus_id) REFERENCES campuses (id) ON DELETE CASCADE ON UPDATE CASCADE) (SQL: insert into disposecollects (bag_id, station_id, undisposed_weight, disposed_weight, status, updated_at, created_at) values (6, 1, 5, 0, Undisposed, 2018-09-25 10:02:23, 2018-09-25 10:02:23))

用户的 campus id 值没有传入插入查询...

以下部分是我的代码吗:

'campus_id' => Auth::user()->campus_id

这是正确的吗?

正如您在

中看到的那样
(SQL: insert into disposecollects (bag_id, station_id, undisposed_weight, disposed_weight, status, updated_at, created_at) values (6, 1, 5, 0, Undisposed, 2018-09-25 10:02:23, 2018-09-25 10:02:23))

没有 campus_id 字段。在 Laravel 中,这通常意味着您的 campus_id 值为 nullempty。我建议您尝试倾倒和死亡 (dd) Auth::user()->campus_id 这样您就可以验证它的价值。

dd 表示 'Dump and Die',因此意味着 Laravel 将输出变量名,不会继续执行代码的任何其他部分。如果您调用 dd(Auth::user()),您将能够看到所有 Auth::user() 属性。您也可以调用 dd(Auth::user()->campus_id),但我建议您尝试输出代码中最通用(并且仍然有用)的部分,因为这样可以保证对问题有更广阔的视野。