假设我有两个模型:
-
用户列表
User
-
大理石清单
Marble
它属于一个
用户
我想把所有现有的大理石都拿来
api/marbles
只有我的弹珠
api/user/marbles
。这个想法是避免一条名为的路线
api/marbles?owned=true
在我的API路线中,我有以下内容:
Route::get('marbles', 'MarbleController@index');
Route::get('user/marbles', 'MarbleController@index(true)');
然后在我的MarbleController中:
class MarbleControllerextends Controller
{
function index($owned = false) {
return $owned ? Marble::where('user_id', Auth::id())->get() : Marble::all();
}
}
不幸的是
MarbleController@index(true)
真的不起作用,因为
(true)
Laravel不会接受不填充可选项
$owned
变量。
是否有方法避免定义新方法,例如
Route::get('user/marbles', 'MarbleController@owned');
function owned() {
return $this->index(true);
}