【发布时间】:2019-05-23 01:12:11
【问题描述】:
我正在尝试创建具有 guest_id 和 department_to_visit 外键的日志条目
SQL:
DROP TABLE IF EXISTS `logs`;
CREATE TABLE `logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`guest_id` int(11) NOT NULL,
`guest_id_number` int(11) NOT NULL,
`date_time_in` datetime(0) NOT NULL,
`date_time_out` datetime(0) NULL DEFAULT NULL,
`purpose` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`department_to_visit` int(11) NULL DEFAULT NULL,
`updated_at` timestamp(6) NULL DEFAULT NULL,
`created_at` timestamp(6) NULL DEFAULT NULL,
PRIMARY KEY (`id`, `guest_id`) USING BTREE,
INDEX `fk_logs_guests1_idx`(`guest_id`) USING BTREE,
INDEX `fk_logs_dept1_idx`(`department_to_visit`) USING BTREE,
CONSTRAINT `fk_logs_dept1` FOREIGN KEY (`department_to_visit`) REFERENCES `dept` (`dept_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_logs_guests1` FOREIGN KEY (`guest_id`) REFERENCES `guests` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
)
日志模型
class Logs extends Model
{
protected $table = 'logs';
public function guests()
{
return $this->belongsTo('App\Guest','guest_id','id');
}
public function departments()
{
return $this->belongsTo('App\Department','department_to_visit','dept_id');
}
我不断收到错误 SQLSTATE[23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败 (guest_log.logs, CONSTRAINT fk_logs_dept1 FOREIGN KEY (department_to_visit ) 参考dept (dept_id) ON DELETE NO ACTION ON UPDATE NO ACTION) (SQL: insert into logs (guest_id, guest_id_number, purpose, department_to_visit, date_time_in, @987 @, created_at) 值 (4, 2, 2, 1, 2018-12-23 12:53:22, 2018-12-23 12:53:22, 2018-12-23 12:53:22))
每当我尝试使用
创建新的日志记录时日志控制器
public function store(Request $request)
{
$this->validate($request, [
'guest_id'=>'required',
'guest_id_number'=>'required',
'purpose'=>'required',
'department_to_visit']);
$logs = new Logs();
$guest = Guest::findOrFail($request->guest_id);
$logs->guest_id = $guest->id;
$logs->guest_id_number = $request->guest_id_number;
$logs->purpose = $request->purpose;
echo $request->department_to_visit;
$department= Department::findOrFail($request->department_to_visit);
// echo '<pre>',var_dump($department),'</pre>';
$logs->department_to_visit =$department->dept_id;
$logs->date_time_in = Carbon::now();
$logs->save();
// return redirect(route('home'));
}
使用这种方法
<div class="container-fluid">
{!! BootForm::inline(['route'=>['logs.store'],'method'=>'POST']) !!}
{!! BootForm::select('guest_id', 'Guest Name',\App\Guest::pluck('last_name','id'),null, [])!!}
{!! BootForm::tel('guest_id_number','ID Number',null, ['required']) !!}
{!! BootForm::select('department_to_visit','Department to Visit', App\Department::pluck('dept_code','dept_id'),null,[]) !!}
{!! BootForm::text('purpose',null,null,['required']) !!}
{!! BootForm::submit('Save') !!}
{!! BootForm::close() !!}
</div>
我曾经收到有关 guest_id 的错误,但已解决。我认为 guest_id 不会有什么不同,但 department_to_visit 继续收到错误。请帮助我解决和了解问题的原因
【问题讨论】:
-
尝试将
App\Department::pluck('dept_code','dept_id')改为App\Department::pluck('dept_id', 'dept_code') -
@ЕвгенийОдинец 错误仍然存在