Php 如何通过从结果中减去数字来计算嵌套关系和追加字段
我有从数据库获取服务的示例查询:Php 如何通过从结果中减去数字来计算嵌套关系和追加字段,php,arrays,laravel,eloquent,relationship,Php,Arrays,Laravel,Eloquent,Relationship,我有从数据库获取服务的示例查询: $services = City::select('id', 'name')->has('services') ->with([ 'services:id,title,description', 'services.reviews' ]) ->get()->each(function($city) { return $city->services->each(function($service) {
$services = City::select('id', 'name')->has('services')
->with([
'services:id,title,description',
'services.reviews'
])
->get()->each(function($city) {
return $city->services->each(function($service) {
$service->setRelation('reviews', $service->reviews->take(3));
return $service;
});
});
这将返回一些json响应:
[
{
"id": 1,
"name": "London",
"services": [
{
"id": 2,
"title": "Service title",
"description": "Service description",
"reviews": [
{
"id": 1,
"author": "John Doe",
"description": "Service review description"
}
]
}
]
}
]
默认情况下,我的案例中的每个服务都有3条评论。如何将剩余评论数附加到每个服务。为此,首先需要计算服务的评论总数并减去3,如果结果大于0,则将分配一个值,否则将分配一个值0。尝试此操作可能有效 我加上的小计算可能会有用
offset()
计算并取3
$services=City::select('id','name')->has('services'))
->与([
'服务:id、标题、说明',
“服务。评论”
])->get()->每个函数($city){
返回$city->services->each(函数$service,$key){
$offset=$key*3;//所以得到3倍
$service->setRelation('reviews',$service->reviews->offset($offset)->take(3));
返回$service;
});
});
您是否尝试过使用count()的laravel。
@KamleshPaul是的,我尝试过,但在我的案例中,它是计数所有评论,而不是连接嵌套关系服务