php - 如何防止在 Laravel 中加载 hasMany 关系?

标签 php laravel eloquent

假设我有以下模型:

Machine.php(简化):

class Machine
{
    public function organization()
    {
        return $this->belongsTo(Organization::class);
    }
    public function readings()
    {
        return $this->hasMany(Reading::class);
    }
}

我想编写一个查询来获取所有机器的数据,但不是 hasMany 关系。

目前,如果我在 Controller 中编写以下内容:return Machine::where('organization_id', Auth::user()->organization_id)->get();,结果数组将如下所示:

[
    {
        "id": 1,
        "organization_id": 1,
        "readings": []
    },
    {
        "id": 2,
        "organization_id": 1,
        "readings": []
    }
]

如何从此输出中删除 readings 数组?我不仅想操作 JSON,因为从数据库获取这些数据也需要相当长的时间。


编辑:不幸的是,我设法删除了 MCVE 中的罪魁祸首,这是 Machine 类上定义的属性,它在每种情况下都会查询 readings 字段。删除该属性解决了我的问题。 (请参阅此问题下的评论。)

最佳答案

laravel 实际上在他们的文档中提到了这件事 here

您只需将其添加到您的模型中即可

protected $hidden = ['readings'];

如果你需要在某个地方使用它,那么你可以使用像这样的 makeHidden 方法

Machines::somequery()->get()->makeHidden(['readings'])->toArray();

关于php - 如何防止在 Laravel 中加载 hasMany 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57188839/

相关文章:

html - Laravel Blade : Checkbox sends 'null' value to database

php - Eloquent 查询不重复关联上的数据

laravel - Eloquent Restore() 函数对软删除无法恢复

php - 为什么 array_unique 将整数键更改为字符串键?

php - 使用 PHP AMQP Lib 和 Docker 发布两次 RabbitMQ 消息

php - Laravel Eloquent 选择 1 :n to 1:1

laravel - 在 Laravel 4 中运行测试会产生 "Unknown method User::save()"

php - 如何将文本分成 php 中的下一行?

PHP - 如何将 jquery dropdown.val() 插入 mysql 查询

php - 如何创造条件上的 Eloquent 模式? (拉拉维尔 5.3)