首页 > 解决方案 > 为什么我在 PHP 和 JSON 中有不同的转储?

问题描述

我在我的项目中使用 Laravel Eloquent。通过进一步编码,我得到了不同的对象结果。

php dump (var_dump(), dd(), dump()) 没有不必要数据的对象,文件 json_encode 生成计算数据,包括加载不需要的东西。

我有两个模型类:

class Product extends Model
{
    public function reviews()
    {
        return $this->hasMany(Review::class);
    }
}
class Review extends Model
{
    public function product()
    {
        return $this->belongsTo(Product::class);
    }
}

获得我使用的产品

$product = App\Product::find(1)

但由于我想将数据发送到 JSON,我只需要通过键入以下内容来加载它:

$product->reviews 

但我不想加载它,我只想获取额外的计算数据而不在我的 json 中加载所有评论

$product['reviews_statistics'] = count($product->reviews);

我希望了解如何在不加载所有 $product->reviews 的情况下为 JSON 设置数据

标签: phpjsonlaravel

解决方案


我会建议你尝试 eagerloading 计数:

$product = App\Product::withCount('reviews')->find(1)

推荐阅读