gpt4 book ai didi

laravel - 调用 Laravel 关系时,它会自动附加。这是如何运作的?

转载 作者:行者123 更新时间:2023-12-02 16:08:52 25 4
gpt4 key购买 nike

调用时:

$user->company

然后返回 $user 的 JSON 表示形式,它将公司关系附加到响应中,即使我不希望这样做。

有人知道发生这种情况的原因吗?

最佳答案

我假设 $userUser Eloquent 模型的实例,并且它具有定义的 company 关系,该关系返回Company Eloquent 模型的实例。

给定以下代码,您将返回一个 JSON 对象,其中包含 User 模型上的属性输出,可能是由模型上的 visible 属性定义的属性(或除模型上的隐藏属性定义的所有属性之外的所有属性)。

$user = User::findOrFail(1);
return $user->toJson();

在此示例中,company 关系不会构成返回数据的一部分(除非您在模型上使用 with 属性来确保它始终返回) .

但是,使用以下代码,您将返回一个 JSON 对象,其中包含 User 模型上所有属性的输出,以及其链接的 company 的 JSON 表示形式> 关系(假设您的 User 模型上的 visiblehidden 属性允许这样做:

$user = User::findOrFail(1);
$user->company;
return $user->toJson();

造成差异的原因是,当调用 toJson 方法时,Laravel 使用名为 getArrayableRelations 的方法来确定可以返回哪些关系。模型实例已加载的任何关系都将包含在此输出中。

当您调用 $user->company 时,您将在模型实例上本地加载 company 关系,然后它将包含在任何序列化方法中,例如 toArraytoJson

关于laravel - 调用 Laravel 关系时,它会自动附加。这是如何运作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58558959/

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