【问题标题】:how to create table relationship in Laravel 5.2如何在 Laravel 5.2 中创建表关系
【发布时间】:2017-10-08 14:42:22
【问题描述】:

我正在使用 laravel 5.2 开发项目管理应用程序,在我的应用程序中用户可以创建项目,每个项目都有很多任务,每个任务也有很多子任务。在我的表项目和任务表中有以下关系。 任务模型与项目模型的关系是

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

项目模型与任务表的关系

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

我需要子任务表来存储子任务和我现在的我的子任务表如下

id    subtask  task_id   project_id
1       abc       2           1
2       dfg       2           1
3       frt       3           2

如何创建与项目和任务表相关的子任务模型?

更新 请查看我的子任务迁移文件

 public function up()
        {
            Schema::create('subtasks', function(Blueprint $table)
            {
                $table->increments('id')->unsigned();
                $table->longText('subtask_name');
                $table->integer('task_id')->unsigned();
                $table->integer('project_id')->unsigned();
                $table->timestamps();

                $table->foreign('task_id')
                      ->references('id')->on('task')
                      ->onUpdate('cascade')
                      ->onDelete('cascade');
            });
        }

【问题讨论】:

  • 需要一些帮助指南吗?

标签: php mysql laravel-5


【解决方案1】:

User 和 Project 表有多对多的关系。因为每个用户可以创建多个项目,一个项目可能属于多个用户。

Project 和 Tasks 具有一对多的关系。因为每个Project都有很多Task,一个Task属于一个Project

Tasks 和 SubTasks 有一对多的关系。因为每个 Task 可以有多个 Subtask,一个 Subtask 属于每个用户。

User.php(模型)

public function projects(){
    return $this->belongsToMany(Project::class);
}

Project.php(模型)

public function users(){
    return $this->belongsToMany(User::class);
}

public function tasks(){
    return $this->hasMany(Tasks::class);
}

Task.php(模型)

public function project(){
    return $this->belongsTo(Project::class);
}

public function subtasks(){
    return $this->hasMany(SubTask::class);
}

SubTask.php(模型)

public function task(){
    return $this->belongsTo(Task::class);
}

使用认为你有一个任务,想知道它拥有的所有子任务。

例如:只是为了演示,我正在使用 tinker 从命令行进行操作。

php artisan tinker

$task = App\Task:whereId(1)->get(); //Get the task details with id 1

$task->subtasks; //This will fetch all the subtasks that belongs to the task

【讨论】:

  • 实际上在这种情况下我需要子任务与任务和项目之间的这种关系。请你再读一遍我的问题吗
  • @Lilan 你现在可以检查一下。如果有任何疑问,请回复。我会尽力而为。
  • 在我的情况下,我们不需要项目模型和子任务模型之间的关系吗?
  • 不,它不是项目和子任务之间的关系。它是项目和任务之间的关系。根据您的问题,每个项目 -> 有很多任务,每个任务 -> 有很多子任务
  • 好的,请查看我更新的问题并查看我的子任务迁移文件并检查它是否正确?
猜你喜欢
  • 2018-08-22
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2016-01-11
相关资源
最近更新 更多