Laravel Eloquent ORM - 嵌套的 with 语句

7

我正在创建一个Web应用程序的API,并尝试将其保持在Eloquent ORM内。 我有一个父子关系:

用户 -> 站点日志 -> 站点

站点类代码:

class Site extends Model {
    public function log() {
        return $this->hasMany('App\SiteLog', 'site_id', 'id');
    }
}

SiteLog类的代码:

class SiteLog extends Model
{       
    public function site()
    {
        return $this->belongsTo('App\Site', 'site_id', 'id');
    }

    public function user()
    {
        return $this->belongsTo('App\User', 'user_id', 'id');
    }
}

当我使用以下方式实例化SiteLog类时:

$sites = Site::with('log')->get();

当我使用jQuery进行GET请求时,我会得到所有站点的信息,并在其中有一个包含相应日志数据的对象数组。这正是我想要的。然而,我希望更进一步,获取与该日志相关联的用户。
就像这样运作:
SiteLog::with('user')->get();

但是所有的语句都像一个大的连接查询一样。然而,我不确定Eloquent ORM是否覆盖了这样的测试用例。

有人完成过这样的事情吗?我可以使用一些相当hacky的做法或只编写原始的SQL查询来完成此操作,但我只是想知道是否有更优雅的方法。

2个回答

16

3

1
如何从嵌套链中获取最后一个对象 User - Darama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接