php - Laravel 5.2 的迁移文件中未定义外键

标签 php mysql laravel-5

我的 Laravel 应用程序中有两个迁移文件作为项目和任务。项目 id 列是任务表 project_id 的外键。我需要将项目 ID 保存为任务表中的project_id。但我没有在任务迁移文件中配置外键关系 任务迁移文件

public function up()
    {
         Schema::create('tasks', function(Blueprint $table)
        {
            $table->increments('id')->unsigned();
            $table->longText('task_name');
            $table->text('body');
            $table->string('assign');
            $table->string('priority');
            $table->date('duedate');
            $table->integer('project_id')->unsigned();
            $table->timestamps();
 });

    }

这是我的任务 Controller

public function postNewTask(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);

}

任务模型

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 project()
     {
         return $this->belongsTo('App\Project');
     }

项目模型

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

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

我的表单操作

<form  method="post" action="{{ route('projects.tasks.create', $project->id) }}">

和路线

Route::post('projects/{projects}/tasks', [
    'uses' => '\App\Http\Controllers\TasksController@postNewTask',
    'as' => 'projects.tasks.create'
]);

但是当我要保存表单数据时发生了以下错误消息

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'project_id' cannot be null

如何解决这个问题。这是我的迁移文件外键未定义问题吗?

最佳答案

终于得到了像这个TaskController一样的结果

  public function postNewTask(Request $request,$id, 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 = $id;
        $task->save();
}

关于php - Laravel 5.2 的迁移文件中未定义外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45779044/

相关文章:

php - 在 CakePHP 2.x ORM + 使用 Function MySQL AND NameClass Models 中删除 ;(

php - array_walk 抛出警告;声明无效可调用

mysql - SQuirreL SQL 客户端是否与 QODBC 兼容?

php - 在 Laravel 中执行连接查询的更好方法

php - undefined variable : errors -- Laravel 5. 2

php - 如何将php参数传递给javascript

javascript - 为什么我收到 $ 未定义错误?

php - Jquery php mysql 登录确实将数据发送到 mysql 但没有返回正确的值?

mysql - MySQL 中的平均 datediff

php - 在自定义表单请求中找不到路线