【发布时间】:2014-08-05 18:00:13
【问题描述】:
我有几个模型,其中包含数据透视表以避免多态关系。
role table
id
name
description
restriction table
id
rule
status
restriction_role table
id
restriction_id
role_id
此设置的原因是角色和限制实际上都可以属于多个其他模型。在这种情况下,一个角色只能有 1 个限制。我通常会将其定义为
class Role extends Eloquent {
public function restrictions()
{
return $this->hasOne('Restriction');
}
}
这显然不起作用,因为 Laravel 不知道连接此关系的数据透视表。我可以通过使用多对多关系轻松实现这一点,但这并不是我的模型的工作方式。在文档中没有看到任何定义这个的东西。有什么想法吗?
【问题讨论】:
-
为什么不能直接将
restriction_id添加到表role? -
另外,按照惯例,你的方法应该被称为
restriction()(单数),因为它只返回一个限制 -
也许使用 hasManyThrough() 或 belongsToMany() 关系a,即使它只针对一个条目
-
我想我可以给角色添加restriction_id,但是角色不需要有限制
-
@MarkBaker 我可以使用 belongsToMany。这会很好。但是,由于只有 1 个限制,我尝试使用 hasOne()
标签: php mysql laravel-4 eloquent