我在一个Laravel 9项目中工作。我有一个Buyer
模型,它有一个名为tiers
的关系,我需要在这里加载计数。
现在,我是这样做的:
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show(Company $company, Buyer $buyer)
{
$this->authorize('view', Buyer::class);
$buyer = Buyer::where('company_id', $company->id)
->where('id', $buyer->id)
->withCount('tiers')
->first();
if (!$buyer) {
return new ApiSuccessResponse(null, [
'message' => 'Buyer not found or invalid buyer ID.'
], 404);
}
return new ApiSuccessResponse($buyer);
}
一定有更好的方法,因为购买者示例已经定义并作为函数参数工作。
就像...
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show(Company $company, Buyer $buyer)
{
$this->authorize('view', Buyer::class);
$buyer = $buyer->withCount('tiers');
return new ApiSuccessResponse($buyer);
}
为什么这不起作用,我需要做什么改变才能让它起作用?
1条答案
按热度按时间zzwlnbp81#
Laravel已经延迟了计数的加载,所以你所需要做的就是使用
loadCount
而不是withCount
,并且不需要重新分配变量: