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 不,它确实是正确的,我不知道你为什么会被否决。顺便说一句,指定id
在Devices
模型中没有用处。
@AmitGupta,我不知道会发生什么,但最近我得到了很多反对票。我开始认为 SO 的社区不像以前那样具有建设性,我开始怀疑是否有任何意义可以为它做出贡献。以上是关于Laravel 刀片混合关系。我怎样才能做到这一点?的主要内容,如果未能解决你的问题,请参考以下文章