关系:属于这个模型或不同的模型

时间:2016-08-04 19:59:54

标签: laravel laravel-5

我们有以下

Manager
[id]

Companies
[id]
[manager_id] not nullable

Stores
[id]
[company_id]
[manager_id] *nullable*

我正在寻找每个商店经理的单一Eloquent关系。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

以你的评论为基础@Sanjay S

class Store extends Model {

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

public function getManager() {
    if (is_null($this->manager)) {
        return $this->company()->manager;
    } else {
       return $this->manager;
}

然后当你调用$ store-> getManager()时,如果商店manager_id为空,你将得到公司经理

答案 1 :(得分:0)

您的问题不明确,因为您在商店表中的关系类似于 manager_id [nullable] ,并且您要求为经理提供单一的Eloquent关系每个商店都有。但是根据我的猜测,您的Eloquent模型应该看起来像这样

class Manager extends Model {

    public function stores() {
        return $this->hasMany(App\Store::class);
    }

    public function company() {
        return $this->hasOne(App\Company::class);
    }
}

公司

class Company extends Model {

    public function manager() {
        return $this->belongsTo(App\Manager::class);
    }
}

商店

class Store extends Model {

    public function manager() {
        return $this->belongsTo(App\Manager::class);
    }
}

希望此解决方案适合您。