在laravel 5.6中创建层次结构关系

时间:2018-07-10 16:03:15

标签: php laravel-5 laravel-5.6

我是laravel的新手,正在尝试创建我的第一个应用程序。
我有三种不同的课程:用户,活动和讲座。
用户能够创建活动和讲座。
每个活动都有其技术经理,产品经理和活动经理,并且用户可以注册活动。
每个讲座都有其讲师,并且用户可以注册该讲座。
我想创建必要的雄辩的关系,但是我不确定用户是否应该属于该活动,反之亦然。 我已经实现了我的目标之一(在用户和活动经理之间建立关系),但是我对其余目标感到困惑,觉得这不是实现目标的最佳方法。
在那一刻,我的代码如下:

App \ Activity:

class Activity extends Model
{

    protected $guarded = [];

    public function TechnicalManager(){
        return $this->belongsTo('App\User','technical_manager');
    }

    public function ActivityManager(){
        return $this->belongsTo('App\User','activity_manager');
    }

    public function ProductManager(){
        return $this->belongsTo('App\User','product_manager');
    }

    public function Enrollers(){
        return $this->belongsToMany('App\User','user_activity');
    }
}

App \ User:

class User extends Authenticatable
{
    use Notifiable;

    public function activities(){
        return $this->belongsToMany('App\Activity','id');
    }
}

1 个答案:

答案 0 :(得分:0)

如果您打算使用Eloquent的关系,则该想法将是:

  1. 我是否需要从“活动”访问用户(注册者)并通过访问关系来调用它? 如果是,请写下关系

只要您使用模型,在模型的两面编写关系都不会出错。如果您不打算使用它们,那么为什么要使用它们?

了解情况:

查找用户,它是活动,谁是活动的技术经理和活动经理

User::with(['activities','activities.TechnicalManager','activities.ActivityManager'])->find($id)