2016-07-08 22 views
0

データベーステーブルがあります:譲受人、チケット、カテゴリ。チケットテーブルでは、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 \コントローラはTicketCtrl.phpを\)

public function store(TicketRequest $request) 
    { 
     $values = $request->all(); 

     Ticket::create($values); 

     response()->json(['message'=>'Done!']); 
    } 

のいくつかのコードブロックは、コードブロックです私のチケット要求のチケット要求で

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に認可変更(アプリケーションが\のHttp \は\ TicketRequest.phpを要求します)。

答えて

0

今解決する解決策があります。

作成する前に\DB::statement('SET FOREIGN_KEY_CHECKS = 0');を追加し、作成後に\DB::statement('SET FOREIGN_KEY_CHECKS = 1');を追加します。しかし、SET FOREIGN_KEY_CHECKSを使用することの利点と欠点の詳細は​​わかりません。

関連する問題