我需要将Project Model ID作为project_id传递给“我的任务模型”表。这是我的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);
}


这是关于将任务数据存储在项目文件夹刀片文件中的我的表单操作路线是show.blade.php

<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');
     }


    //
}


这是项目模型

 {
        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”不能为空
 如何解决这个问题?

最佳答案

在store()函数中,您没有给任务指定project_id。

因此,当您保存任务时,它会使project_id行为空。默认情况下,不允许在一行中输入。这就是为什么您会收到此错误。

我认为添加此行将起作用:

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


您也可以在迁移中使project_id为空。如果这样做,则允许project_id为null。但是我不认为那是您想要的。

07-24 09:16