使用withCount方法时,Laravel 7(带分形)不包括关系计数

使用withCount方法时,Laravel 7(带分形)不包括关系计数,laravel,eloquent,thephpleague-fractal,Laravel,Eloquent,Thephpleague Fractal,我是一个相对较新的PHP开发人员,所以我可能会有一些错误 PHP:7.4 拉维/流明:7.0 分形:0.13-dev(我想) 我有一个模型,程序 <?php use Illuminate\Database\Eloquent\Model; class Program extends Model { public $guarded = ['id']; public function sites() { return $this->belong

我是一个相对较新的PHP开发人员,所以我可能会有一些错误

PHP:7.4 拉维/流明:7.0 分形:0.13-dev(我想)

我有一个模型,
程序

<?php

use Illuminate\Database\Eloquent\Model;

class Program extends Model
{
    public $guarded = ['id'];

    public function sites()
    {
        return $this->belongsToMany(Site::class, 'programs_sites');
    }
}

?>
我能够使用此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
query参数时,
sites
块会按预期下降。然而,我的前端还需要嵌套关系的计数。我知道我可以简单地运行站点阵列计数,但如果可能的话,我希望从服务中获得它

Laravel文档表明有一个
with count
,它“将在结果模型上放置一个
{relation}\u count
列”。然而,就我而言,它不起作用。当通过Postman点击此按钮时,我希望在程序模型上看到一个附加属性,
“site\u count”:1
。但我没有看到任何其他属性,也没有错误


鉴于我对PHP/Laravel缺乏经验,我的第一个假设是我做错了什么,但我不知道可能是什么。有人能洞察到我遗漏了什么吗?

站点的
模型是否与
程序的
定义正确相反?另请注意,关系是
站点
,因此列名将是
站点_计数
,而不是
站点_计数
站点
模型发布在上面,没有反向关系。但是我现在可以在程序模型中获取站点信息。我只是觉得站点不重要(感谢您对这一点的澄清)。您应该将关系的另一面添加到
站点
模型中。此外,我还没有使用分形,您是否在控制器方法中尝试了
dd($products)
,以确保它(分形)不会出于某种原因删除列?嗨,我刚刚测试了您的代码。毫无疑问,这将返回站点计数。你能把
dd($products)的结果打印出来吗我还可以知道您是否正在使用哪个laravel软件包进行分形吗?
{
    "data": [
        {
            "id": 817,
            "name": "Daugherty Ltd",
            "sites": [
                {
                    "id": 13,
                    "name": "MyDomain.com",
                },
            ],
        }
    ],
    "meta": {
        "count": 1
    }
}