我有数据库表:受让人,门票和类别。在票证表中,assignee_id和category_id是外键。我写了一些请求控制器。我试图将新的票证请求保存到数据库。但是,当我测试我的应用时,它会显示以下错误:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`laraapi`.`tickets`, CONSTRAINT `tickets_assignee_id_foreign` FOREIGN KEY (`assignee_id`) REFERENCES `assignees` (`id`)) (SQL: insert into `tickets` (`title`, `content`, `priority`, `updated_at`, `created_at`) values (testtitle, test content, 1, 2016-07-08 16:06:16, 2016-07-08 16:06:16))
以下是我的票证控制器的一些代码块(App \ Http \ Controllers \ TicketCtrl.php)
public function store(TicketRequest $request)
{
$values = $request->all();
Ticket::create($values);
response()->json(['message'=>'Done!']);
}
以下是我的票证请求的代码块(App \ Http \ Requests \ TicketRequest.php)
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required',
'content' => 'required',
'priority' => 'required'
];
}
public function response(array $errors)
{
return response()->json(['message'=> 'You should put title, content and priority', 'code'=> 422], 422);
}
}
在故障单请求中,我将授权更改为TRUE,因为我没有设置任何授权服务。
答案 0 :(得分:0)
现在我得到了解决方案。
我在创建之前添加\DB::statement('SET FOREIGN_KEY_CHECKS = 0');
,在创建之后添加\DB::statement('SET FOREIGN_KEY_CHECKS = 1');
。但我不知道使用SET FOREIGN_KEY_CHECKS的细节优缺点。