我正在使用 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');
});
}
最佳答案
用户和项目表具有多对多关系。因为每个用户可以创建多个项目,一个项目可能属于多个用户。
项目和任务具有一对多关系。因为每个Project都有很多Task,一个Task又属于一个Project
任务和子任务具有一对多关系。因为每个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);
}
用法认为您有一个任务并且想知道它具有的所有子任务。
例如:只是为了演示,我正在使用修补程序从命令行进行操作。
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
关于php - 如何在 Laravel 5.2 中创建表关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46628033/