使用withCount方法时,Laravel 7(带分形)不包括关系计数
我是一个相对较新的PHP开发人员,所以我可能会有一些错误 PHP:7.4 拉维/流明:7.0 分形:0.13-dev(我想) 我有一个模型,使用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
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
}
}