我正在使用Angular中的前端应用程序在Laravel中构建一个RESTful api。
我有很多型号/控制器和路线。我正在努力设法为嵌套资源创建宁静的路径。
例如,我显示客户列表的路线很简单:
Route::resource('clients', 'ClientsController');
客户可以拥有多个广告系列:
class Client extends Model
{
public function campaigns()
{
return $this->hasMany('App\Campaign');
}
}
我不需要显示所有广告系列的路线,但我确实需要一条路线来显示基于客户的所有广告系列。
Route::resource('clients.campaigns', 'CampaignsController');
我的意图是Angular应用程序请求的端点是:
myapp/api/clients/6/campaigns
在哪里' 6'是客户端ID。这将返回属于ID为6的客户的广告系列列表。
在我的索引方法中,我试图使用隐式模型绑定来获取此客户端ID,但我总是得到一个空的结果集:
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显示了这一点。 我哪里错了?
答案 0 :(得分:1)
对于遇到此问题的任何人--Laravel正在为我注入client_id。
因此索引方法变为:
# sudo rpm --nodeps -ivh python-2.6.6-51.el6.x86_64.rpm