【发布时间】:2016-10-12 20:14:10
【问题描述】:
所以我正在为我正在创建的 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 查询来完成此操作,但我只是想知道是否有更雄辩的方式来执行此操作。
【问题讨论】:
标签: php laravel join orm eloquent