Laravel Eloquent,多维关系访问

时间:2021-07-27 10:54:49

标签: php laravel eloquent relationship laravel-8

我总共有 4 个模型,

项目,
董事会,
任务,
子任务

项目 -> hasMany -> 板
项目 -> hasManyThrough -> 任务

板 -> hasMany -> 任务
Board -> hasManyThrough -> SubTask

任务 -> hasMany -> 子任务

这是我的项目模型,

namespace App\Models;
    
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Project extends Model
{
    use HasFactory, SoftDeletes;

    public function priority()
    {
        return $this->belongsTo(Priority::class);
    }

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

    public function boards()
    {
        return $this->hasMany(Board::class);
    }

    public function tasks()
    {
        return $this->hasManyThrough(Task::class, Board::class);
    }

    public function subTasks()
    {

    }
}

电路板模型,

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Board extends Model
{
    use HasFactory, SoftDeletes;

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

    public function subTasks()
    {
        return $this->hasManyThrough(SubTask::class, Task::class);
    }
}

任务模型,

namespace App\Models;
    
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Task extends Model
{
    use HasFactory, SoftDeletes;

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

如何访问具有 eloquent 关系的项目子任务?

0 个答案:

没有答案