2017-11-04 6 views
1

私が手にこのエラーSQLSTATE [23000]:整合性制約違反:追加または子の行を更新できません:外部キー制約が使用して失敗を雄弁

SQLSTATE [23000]:整合性制約違反:1452は追加できませんか アップデート子行:私はしかし、私はmysql上を経由して、これを行うとき、私は

次取得するには、次のように、TODOを追加するときに、外部キー制約が

を失敗しました

mysql> INSERT INTOタスク(タスク、created_at、user_id)VALUES( 'owls はクールです'、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'); 
    } 
関連する問題