Php 是否有许多基于中间模型的关系?

Php 是否有许多基于中间模型的关系?,php,eloquent,Php,Eloquent,我有3个表:Role、ThreadPermission和Thread。其表格结构如下: Role - id - name ThreadPermission - id - role_id - thread_id - is_Moderator (bool) Thread - id - title 以下是ThreadPermission数据的屏幕截图: 事实上,我很难解释这种关系(这就是编辑的原因) 因此,当我创建一个新的线程对象时,我还创建了一个新的线程权限对象,

我有3个表:
Role
ThreadPermission
Thread
。其表格结构如下:

Role
  - id
  - name
ThreadPermission
  - id
  - role_id
  - thread_id
  - is_Moderator (bool)
Thread
  - id
  - title
以下是
ThreadPermission
数据的屏幕截图:

事实上,我很难解释这种关系(这就是编辑的原因)

因此,当我创建一个新的
线程
对象时,我还创建了一个新的
线程权限
对象,我在其中为每个
角色
分配
是主持人
属性,希望您能在上面的屏幕截图中看到

我希望通过
Role
方法访问
Thread
,其中
ThreadPermission
中的主持人
等于
TRUE
。我似乎需要解决两个问题,第一个是建立
角色
线程
之间的关系,第二个是只显示
线程
,在
线程权限

为了处理第一个问题,我尝试在我的角色类中实现:

class Role extends Eloquent {

    public function moderatedThreads() {
        // Hopefully I can also 'ThreadPermission'->where('is_Moderator', TRUE)
        return $this->hasManyThrough('Thread', 'ThreadPermission', 'role_id', 'id')->get();
    }

}
但是当我尝试
var\u dump
方法时:

var_dump($app->user->roles()->moderatedThreads());
它返回一个空对象

object(Illuminate\Database\Eloquent\Collection)#203 (1) {
  ["items":protected]=>
  array(0) {
  }
}

我很困惑,我把实施的哪一部分搞砸了。你们能看到我看不到的东西吗?

你们有没有在类角色中尝试过这个代码:'return$this->hasManyThrough('Thread','ThreadPermission','Role_id','id')->toSql()?这可能有助于您了解查询的错误。@Grommy非常感谢,因为我的问题只能通过破解Eloquent来解决。您是否在类角色中尝试过此代码:“return$this->hasManyThrough('Thread','ThreadPermission','Role_id','id')->toSql()?这可能有助于您了解查询的错误所在。@gromy非常感谢,因为我的问题只能通过雄辩的黑客攻击来解决