Laravel 刀片混合关系。我怎样才能做到这一点?

Posted

技术标签:

【中文标题】Laravel 刀片混合关系。我怎样才能做到这一点?【英文标题】:Laravel blade mixed relationships. How can I do that? 【发布时间】:2017-05-04 19:24:16 【问题描述】:

我有一个问题。我有两张桌子: 设备人员

在这些数据库中,一个设备可以分配给一个人(所以它是一对一的关系),但一个人可能有很多设备(所以这是一对多的关系)。我如何在 Laravel 中做到这一点?一对一有点容易,在模型中我可以做到:

设备

class Devices extends Model

    public function persons()

        return $this->hasOne('App\Persons','id');

    

人员

class Persons extends Model

    public function devices()

        return $this->belongsTo('App\Devices');

    

所以我认为这是一对一的关系:一台设备分配给一个人。

如何让一个人拥有多台设备?在 Persons 模型中将 belongsTo 更改为 belongsToMany?这些变体可以吗?

【问题讨论】:

附带说明,您应该单独命名您的模型(这是一个词吗?^^),因为一个实例代表一个对象,而不是多个对象。 new Persons() 没有意义,因为它只会创建一个 Person 【参考方案1】:

试试这个:

人员

public function devices() 
    return $this->hasMany('App\Devices');

意味着 Person 将拥有许多设备。

设备

public function persons() 
    return $this->belongsTo('App\Persons');

表示设备属于某个人。


更多信息:http://laravel.com/docs/5.3/eloquent-relationships#one-to-many

【讨论】:

【参考方案2】:

这是一个one-to-many 关系,因此您的关系将如下所示:

class Persons extends Model

    public function devices()

        return $this->hasMany('App\Devices');

    

设备

class Devices extends Model

    public function person()

        return $this->belongsTo('App\Persons');

    

【讨论】:

你可以添加一个链接到 Laravel 关于关系的文档:laravel.com/docs/5.3/eloquent-relationships#one-to-many @AntoineB 只是补充说:P 不,它确实是正确的,我不知道你为什么会被否决。顺便说一句,指定idDevices 模型中没有用处。 @AmitGupta,我不知道会发生什么,但最近我得到了很多反对票。我开始认为 SO 的社区不像以前那样具有建设性,我开始怀疑是否有任何意义可以为它做出贡献。

以上是关于Laravel 刀片混合关系。我怎样才能做到这一点?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 laravel 刀片中的 json 数据创建分页链接

我怎样才能有效地做到这一点? [关闭]

我怎样才能做到这一点? - 动画报价 - JQuery

我怎样才能在 Corona 中做到这一点?

Laravel 刀片 - 如果满足条件,则添加一个类

Laravel - 如何在刀片视图中尝试/捕获?