gpt4 book ai didi

php - Laravel Eloquent ORM - 嵌套语句

转载 作者:可可西里 更新时间:2023-11-01 13:11:57 25 4
gpt4 key购买 nike

所以我正在为我正在创建的 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 查询来完成此操作,但我只是想知道是否有更 Eloquent 方法来完成此操作。

最佳答案

Eloquent 让您轻松做到这一点 :)

https://laravel.com/docs/5.2/eloquent-relationships#eager-loading

如果您还需要与每个日志相关的用户,您只需像这样预先加载它

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

关于php - Laravel Eloquent ORM - 嵌套语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37772322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com