그래서 두 개의 모델, 클라이언트 및 프로젝트가 있고 클라이언트에는 프로젝트와 hasMany 관계가 있습니다. 나는 클라이언트에 대한 프로젝트 수를 JSON 응답에 추가하려고 시도하고 있지만 작동시킬 수는 없다.컬렉션 json에 withCount 추가하기
컨트롤러가 모든 프로젝트를 반환합니다.
public function index(Client $client)
{
return $client->all();
}
내 모델에 다음이 포함되어 있습니다.
protected $appends = ['client_projects_count'];
/**
* Create a relationship between this client and it's projects
*/
public function clientProjects() {
return $this->hasMany('App\Project');
}
public function getClientProjectsCountAttribute()
{
return $this->withCount('clientProjects');
}
이 경우 응답에 이 추가되지만 빈 배열입니다. 나는 dd($this->withCount('clientProjects')->get())
이 맞다면 정확한 수의 client_projects_count를 볼 수 있지만, dd
을 제거하고 ->get()
을 유지하면 내부 서버 오류가 발생한다.
또한이 코드는 모든 코드가 아닌 index()
메서드에서만로드 할 수 있습니다. 내가 더 좋은 방법은 자신의해야 확신 있지만 Documentation
$clients = Client::withCount('projects')->get();
foreach ($clients as $client) {
echo $client->projects_count;
}
그래서 마지막 두 줄 중 하나는'getClientProjectsCountAttribute' 갈? '$ client'는 어디에서 오는 것입니까? 나는 $ this-> this로 변경하려고 시도하고 $ client-> with 및 $ return-> withCount (')를 사용하여'정의되지 않은 메소드 호출 '을 \\ Database \\ Query \\ Builder :: all() projects ') -> get();'마지막 줄 – KeironLowe
@KeironLowe 하나의 클라이언트 또는 클라이언트 목록에 대해 projectCount가 필요합니까? –
고객 명단, 모든 고객을 열거하고 있고 고객이 가지고있는 프로젝트의 양을 더하고 싶습니다 – KeironLowe