无法存储新数据

时间:2016-07-08 16:18:05

标签: httprequest laravel-5.2

我有数据库表:受让人,门票和类别。在票证表中,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,因为我没有设置任何授权服务。

1 个答案:

答案 0 :(得分:0)

现在我得到了解决方案。

我在创建之前添加\DB::statement('SET FOREIGN_KEY_CHECKS = 0');,在创建之后添加\DB::statement('SET FOREIGN_KEY_CHECKS = 1');。但我不知道使用SET FOREIGN_KEY_CHECKS的细节优缺点。