多个“有很多通过”与laravel的雄辩

dar*_*mnx 4 php sql orm laravel eloquent

我遇到了 Laravel 的 ORM 的问题,雄辩但尚未找到解决方案。

我有一些表格如下

团队

 - id
 - name
Run Code Online (Sandbox Code Playgroud)

用户

 - id
 - name
 - role
 - team_id
Run Code Online (Sandbox Code Playgroud)

学生信息

 - id
 - user_id
 - data1
 - data2
 - etc ...
Run Code Online (Sandbox Code Playgroud)

项目

 - id
 - student_id
 - name
Run Code Online (Sandbox Code Playgroud)

现在,我想查询某个特定的所有项目team,其中team = 'some team'

现在的问题是,如果没有 ORM,这很简单,我会在原始 SQL 中完成多个连接。

然而,因为所有这些表都有一个共同的列“名称”,我将不得不为所有这些东西起别名,这真的很无聊

对于雄辩的我找不到一种方法来使用“有很多通过”来执行此查询,因为它只允许中间,而且我无法执行原始 SQL,因为 alis 的事情确实是一个痛苦的事情,因为它会是将结果映射到 Laravel 的模型非常困难

Jon*_*eir 10

本案不存在原生关系。

我创建了HasManyThrough无限级别的关系:GitHub 上的存储库

安装后,您可以像这样使用它:

class Team extends Model {
    use \Staudenmeir\EloquentHasManyDeep\HasRelationships;

    public function projects() {
        return $this->hasManyDeep(Project::class, [User::class, StudentInfo::class],
            [null, null, 'student_id']);
    }
}

$projects = Team::where('name', 'some team')->first()->projects;
Run Code Online (Sandbox Code Playgroud)