저는 Laravel에 RESTful API를 구축하고 있는데, 프런트 엔드 앱은 Angular입니다.Laravel의 중첩 된 리소스에서 모델 바인딩
저는 여러 모델/컨트롤러와 경로가 있습니다. 중첩 된 리소스를위한 안정된 경로를 만드는 데 어려움을 겪고 있습니다.
예를 들어, 클라이언트의 목록을 표시하는 내 경로는 간단하다 :
Route::resource('clients', 'ClientsController');
클라이언트는 많은 캠페인을 가질 수있다 : 나는 모든 캠페인을 표시하는 경로가 필요하지 않습니다
class Client extends Model
{
public function campaigns()
{
return $this->hasMany('App\Campaign');
}
}
을, 그러나 나는 클라이언트를 기반으로 모든 캠페인을 보여줄 경로가 필요합니다.
Route::resource('clients.campaigns', 'CampaignsController');
내 의도는 할 각 응용 프로그램에 의해 요구 된 엔드 포인트에 대한이었다
'6'클라이언트 ID입니다myapp/api/clients/6/campaigns
. 이것은,이 클라이언트 ID를 얻기 위해 바인딩 암시 적 모델을 사용하려고 내 색인 방법은 ID 6.
와 클라이언트에 속하는 캠페인의 목록을 반환하지만, 난 항상 빈 결과 집합 얻을 :
을class CampaignsController extends ApiController
{
public function index(Client $client)
{
$campaigns = Campaign::where('client_id', $client->id)->get();
if (!count($campaigns)) {
Log::warning('Campaigns list is empty');
return $this->respondNotFound('No Campaigns Found');
}
try {
return $this->respond([
'data' => $this->campaignTransformer->transformCollection($campaigns->all())
]);
} catch (\Exception $e) {
Logging::logException($e, 'API error showing campaigns list');
return $this->respondInternalError('An internal error occurred');
}
}
}
분명히 내 경로가 클라이언트를 바인딩하지 않습니다. $ client의 var_dump가 이것을 보여줍니다. 어디서 잘못 가고 있습니까?