gpt4 book ai didi

php - Laravel 4 急切加载 - 所有关系都被推到第一个返回的对象

转载 作者:行者123 更新时间:2023-11-29 13:12:10 25 4
gpt4 key购买 nike

好的,所以我正在尝试找出急切加载以提高应用程序性能。我正在开发服务数据库,但遇到了一些问题。这是我的代码

$service_data = Client::join('service_requests','clients.id','=','service_requests.client_id')
->join('service_request_comments','service_requests.id','=','service_request_comments.service_request_id')
->whereNotNull('service_request_comments.time')->with('service_requests')->with('service_requests.comments')->get();

该查询确实正确提取了数据,但它将所有 service_requests 和 service_requests.comments 加载到第一个 client_object 中,而不是加载带有 service_requests 对象的客户端对象,然后加载带有适当注释的 service_request 对象。

这些关系都是一对多...

...A client can have many service_requests
...A services_request can have many comments
...and by extention...
...A client can have many comments

我尝试使用约束,但这只给了我几十个具有不同语法的 500。有人可以告诉我我做错了什么吗?

最佳答案

如果您正在进行急切加载,请不要使用联接。您本质上是将查询生成器命令与 Eloquent 功能相结合,而两者是冲突的。像这样的东西应该得到相同的结果(暂时跳过 where 约束):

$service_data = Client::with('service_requests.comments')->get();

请注意,嵌套的 with() 请求将自动预先加载 service_requests 以及它们的注释。

如果您需要查询评论关系,有几种方法可以做到这一点,并且我不想对您的具体用途做出假设(或者是否有必要),所以我暂时跳过它。

关于php - Laravel 4 急切加载 - 所有关系都被推到第一个返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21946876/

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