我需要将Project Model id作为project_id传递给My Task Model表。这是我的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);
}
这是关于在项目文件夹刀片文件中存储任务数据的My form行动路线是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列&#39; project_id&#39;不能为空 如何解决这个问题?
答案 0 :(得分:1)
在store()函数中,您不会为任务提供project_id。
因此,当您保存任务时,它会使project_id行为null。默认情况下,行不允许这样做。这就是你得到这个错误的原因。
我认为添加这一行会起作用:
$task->project_id = $project->id;
您还可以在迁移中使project_id为空。如果这样做,则允许project_id为null。但我不认为那是你想要的东西。
答案 1 :(得分:0)
仅将project_id
字段设置为有效值或为零(如果它没有唯一索引)
答案 2 :(得分:0)
在您的迁移文件中,您没有提到project_id为null。 如果你不是
,你必须以这种方式添加project_id$table->string('project_id')->nullable();
如果你没有那样使用那么你必须将project_id作为有效值传递,如0或任何但不是null。 看到错误。它说project_id不能为null。所以你不能使用null值作为project_id。
你在数据库中说过project_id不是null但是发送空值就是你遇到这个错误的原因。希望你明白。