laravel - Laravel 7(带有分形)在使用 withCount 方法时不包括关系计数
问题描述
我是一个相对较新的 PHP 开发人员,所以我可能会弄错一些。
PHP:7.4 Laravel/Lumen:7.0 Fractal:0.13-dev(我认为)
我有一个模型,Programs
。
<?php
use Illuminate\Database\Eloquent\Model;
class Program extends Model
{
public $guarded = ['id'];
public function sites()
{
return $this->belongsToMany(Site::class, 'programs_sites');
}
}
?>
与 有belongsToMany
关系Sites
。
?>
<?php
use Illuminate\Database\Eloquent\Model;
class Site extends Model
{
public $guarded = ['id'];
}
?>
我可以使用这个 ProgramController 方法:
public function index(Request $request) {
$query = Program::withCount('sites')->whereClientId($request->get('client_id'));
$products = $query->get();
return $this->fractal->respondWithCollection($products, new ProgramTransformer);
}
使用以下 URL 从 API 返回嵌套关系:http://local:8081/ads/api/programs?client_id=130785&includes%5B0%5D=sites
{
"data": [
{
"id": 817,
"name": "Daugherty Ltd",
"sites": [
{
"id": 13,
"name": "MyDomain.com",
},
],
}
],
"meta": {
"count": 1
}
}
当我删除includes
查询参数时,sites
块按预期下降。但是我的前端也需要嵌套关系的计数。我知道我可以简单地计算站点数组,但如果可能的话,我想从服务中获取它。
Laravel 文档表明有一个withCount
“将{relation}_count
在您的结果模型上放置一列”。但是,就我而言,它不起作用。当通过邮递员点击这个时,我希望在 Program 模型上看到一个额外的属性,"site_count": 1
. 但我没有看到任何其他属性,也没有错误。
鉴于我对 PHP / Laravel 缺乏经验,我的第一个假设是我做错了什么,但我不知道它可能是什么。谁能提供我所缺少的洞察力?
解决方案
推荐阅读
- javascript - 如何在选项下拉列表中检测鼠标事件
- php - 为什么链接不会显示在我的下拉列表中,但会出现在下拉列表之外?
- android - iOS 或 Android 设备的 ID - 用户不可重置且无需用户权限即可拉取
- appium - 如何在appium中处理应用程序生成的弹出窗口
- swift - NSPopUpButton 在 Swift Playground 中灰显
- html - 如何使用 calc 正确设置动态高度?
- python - Pandas 数据框将特定日期范围的长格式数据转换为宽格式
- laravel - Laracsv UTF-8 编码
- python - 使用 set() 删除重复的 url python BeautifulSoup 会破坏 url
- javascript - 尽管 Lambda 更新函数返回成功,但 DynamoDB 未更新