php - 为什么我在 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 设置数据
解决方案
我会建议你尝试 eagerloading 计数:
$product = App\Product::withCount('reviews')->find(1)
推荐阅读
- android - 在同一个 android 应用程序中为不同域维护不同的工作流程
- javascript - 如何安装模拟服务器和协议文件以进行 API 测试?
- spring - 使用 JPA 创建列存储表
- android - FCM 通知退订
- c# - Aspose PDF 如何找到许可对象
- amazon-web-services - AWS Docker 部署失败并出现错误:未知速记标志:'e' in -e and no basic auth credentials
- jquery - 有没有办法让我的 div 在使用 jquery 滚动功能和动画达到一定高度后无缝滑动?
- spring - 我可以在 Bean 关闭功能时让 Spring 提供带有 null 的 @Autowired 构造函数吗?
- xslt - 在 foreach 循环中使用变量构建 XSLT 字符串
- c# - 应用程序设置无法升级