2017-11-04 303 views
1

我得到這個錯誤SQLSTATE [23000]:完整性約束衝突:不能添加或更新子行:使用外鍵約束失敗雄辯

SQLSTATE [23000]:完整性約束違規:1452無法添加或 更新子行,外鍵約束失敗

當我添加待辦事項,但是當我通過對mysql做到這一點像下面我得到以下

mysql> INSERT INTO tasks(task,created_at,user_id)VALUES('owls are cool',CURTIME(),1);查詢行,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'); 
    } 
相關問題