2017-11-04 2 views
1

내가 얻을이 오류SQLSTATE [23000] : 무결성 제약 조건 위반 : 추가 또는 자식 행을 업데이트 할 수 없습니다 : 외래 키 제약 조건을 사용하여 실패를 웅변

SQLSTATE [23000] : 무결성 제약 조건 위반 : 1452 추가 할 수 없습니다 또는 자식 행을 업데이트 : 나는 할 일을 추가 할 때 외래 키 제약 조건이

실패, 내가 mysql에를 통해이 작업을 수행하지만 때 다음 내가 얻을 다음

,536처럼

mysql> INSERT INTO 작업 (작업, created_at, user_id) VALUES ('올빼미 은 멋지다', CURTIME(), 1); 쿼리 OK, 1 행의 영향 (0.03 초)

내 데이터베이스에 잘 표시되지만 경로에 연결된 컨트롤러 내에서 작동하지 않습니다.

이는 방식으로 슬림 PHP에서

어떤 제안

<?php 

namespace App\Controllers; 

use Slim\Http\Request; 
use Slim\Http\Response; 

use App\Models\Task; 
use App\Models\User; 



class HomeController extends BaseController 
{ 

    public function index($request, $response) 
    { 


     return $this->c->view->render($response, 'home.twig'); 

    } 

    public function addTask($request, $response) { 
     $input = $request->getParsedBody(); 
     $sql = new Task(); 

     $options = array(
      'options' => array(
       'default' => 3, // value to return if the filter fails 
       // other options here 
       'min_range' => 0 
      ), 
      'flags' => FILTER_FLAG_STRIP_BACKTICK, 
     ); 

     $sql->task = filter_var($input['task'], FILTER_SANITIZE_STRING, $options); 


     $sql->save(); 
     return $response->write($sql->toJson())->withRedirect('/todos'); 
    } 
+0

내 추가 작업 컨트롤러를 변경했다가 수정? 작업에 작업이있는 이유는 무엇입니까? 매우 혼란스러워! – Scriptonomy

+0

@Scriptonomy 귀하의 지침에 따라 문제를 파악한 것이지만, 내 주요 질문은 사용자와 관련된 새로운 작업을 어떻게 추가합니까? – BARNOWL

답변

0

을 웅변 사용이 $ 입력은 무엇입니까이

<?php 

namespace App\Controllers; 

use Slim\Http\Request; 
use Slim\Http\Response; 

use App\Models\Task; 
use App\Models\User; 

use App\Auth\Auth; 

class HomeController extends BaseController 
{ 

    public function index($request, $response) 
    { 


     return $this->c->view->render($response, 'home.twig'); 

    } 

    public function addTask($request, $response) { 

     $data = $request->getParsedBody(); 
     $task = Task::create([ 
      'task' => $data['task'], // $request->title also works? 
      'user_id' => Auth::user()->user_id // there might be a better solution, but this works 100% 
     ]); 

     var_dump($task); 

     return $response->write($task->toJson())->withRedirect('/todos'); 
    } 
관련 문제