2017-08-19 15 views
0

プロジェクトモデルIDをproject_idとしてマイタスクモデルテーブルに渡す必要があります。これは、これは、プロジェクトフォルダブレード・ファイル内の店舗のタスクデータに係るマイフォームアクションのルートである SQLSTATE [23000]:整合性制約違反:Laravel 5.2

<form method="post" action="{{ route('tasks.store') }}"> 

この

<?php 

namespace App; 

use App\User; 
use App\Auth; 
use App\Project; 

use Illuminate\Database\Eloquent\Model; 

class Task extends Model 
{ 
    protected $fillable = ['task_name', 'body', 'assign','priority','duedate','project_id']; 



     public function scopeProject($query, $id) 
    { 
     return $query->where('project_id', $id); 
    } 


    public function projects() 
    { 
     return $this->belongsTo('App\Project'); 
    } 


    // 
} 
タスクモードであるshow.blade.phpあるマイTaskController

 public function store(Request $request, Project $project) 
{ 
    $task = new Task; 
    $task->task_name = $request->input('name'); 
    $task->body = $request->input('body'); 
    $task->assign = $request->input('status'); 
    $task->priority = $request->input('status'); 
    $task->duedate = date("Y-m-d", strtotime($request->input("date"))); 
    $task->project_id = $project->id; 


    // This will set the project_id on task and save it 
    $project->tasks()->save($task); 
} 

です

これはプロジェクトモデル

{ 
     protected $fillable = ['project_name','project_notes','project_status','color','group']; 
     // 

     public function tasks(){ 
      return $this->hasMany('App\Task'); 
    } 


but I got this error massage here 

SQLSTATE [23000]:整合性制約違反:1048列 'project_id'をnullにすることはできません この問題をどのように修正できますか?

+0

作成している新しいタスクにストア関数のproduct_idを追加する必要があります。あなたが今それをしていないので、それはnullです。 –

+0

ここでコード例を実行できますか? please – Lilan

+0

@Raidersの回答 –

答えて

1

store()関数では、タスクにproject_idを指定しません。

タスクを保存すると、project_id行がnullになります。デフォルトでは、これは行には許可されていません。そのため、このエラーが発生します。

私はこの行を追加することが仕事だと思う:

$task->project_id = $project->id; 

あなたはまた、あなたの移行でPROJECT_ID NULL値可能にすることができます。そうした場合は、project_idをnullにすることができます。しかし、私はそれがあなたが欲しいものだとは思わない。 (それが一意でないインデックスを持っている場合)

+0

この行をどこに追加すればよいですか?$ task-> project_id = $ project-> id ;? @レイダー – Lilan

+0

以下:$ task = new Task。 Project $ project(あなたがストア関数に与えるパラメーター)は、タスクを正しく割り当てるプロジェクトですか? – Nieck

+0

この行を追加$ task-> project_id = $ project-> id; TaskControllerストアメソッド。同じエラーがここに発生..... – Lilan

0

のみ移行ファイルで有効な値またはゼロに

0

project_idフィールドを設定しますPROJECT_IDがnullであることを言及されていません。 あなたは

$table->string('project_id')->nullable(); 

でない場合は、その方法のように使用されていない場合、あなたは0か何かではなく、ヌルなどの有効な値としてPROJECT_IDを渡すために持っている必要があり、このようにPROJECT_IDを追加する必要があります。 エラーを参照してください。 project_idをnullにすることはできません。 project_idとしてnull値を使用することはできません。

あなたはあなたのデータベースでproject_idがnullではないと言っていますが、このエラーが発生した理由はnull値です。あなたが理解したいと思っています。

+0

はい私は分かっていますが、project_idを送る必要があります。問題は、project_idをタスクモデルに渡していません。あなたの店舗機能の – Lilan

+0

はどこから$ project-> idを取得しましたか?引数としてProject $プロジェクトオブジェクトを渡しますが、テーブル行の情報は渡されません。だから私はあなたのコードとしてnullにする必要がありますと思う。直接project_idをストア関数の第2引数として渡します。 –

+0

私はここにいくつかのコード例を教えていただけます – Lilan

関連する問題