我是一个相对较新的PHP开发人员,所以我可能会错一些。
PHP:7.4 Laravel /流明:7.0 分形: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
块会按预期放下。但是,我的前端也需要计数嵌套关系。我知道我可以简单地计算一个sites数组,但是如果可能的话,我想从服务中获取它。
Laravel文档指出有一个withCount
,它“将在您生成的模型上放置一个{relation}_count
列”。但是,就我而言,它不起作用。通过邮递员访问此程序时,我希望在程序模型"site_count": 1
上看到一个附加属性。但是我没有看到任何其他属性,也没有错误。
鉴于我对PHP / Laravel的经验不足,我的第一个假设是我做错了什么,但我不知道这可能是什么。谁能提供我所缺少的见识?