Laravel新的控制器方法不起作用

时间:2019-12-03 10:31:59

标签: laravel controller routes

由于某种原因我在控制器中创建新功能时,它不起作用。当我将代码从此函数(getUnitsNotIn)设置为另一个函数(索引)时,该代码有效。 有人知道为什么会这样吗?

我的UnitsController.php操作

public function index(){
    $items = Unit::select('parent_id')->where('parent_id','!=',NULL)->get()->toArray();
    return Units::whereNotIn('id',$items)->get();
}

public function getUnitsNotIn(){
    $items = Unit::select('parent_id')->where('parent_id','!=',NULL)->get()->toArray();
    return Units::whereNotIn('id',$items)->get();
}

我的api.php

Route::apiResource('/units', 'UnitController');
Route::get('/units/notIn', 'UnitController@getUnitsNotIn');

简而言之,我做的任何新控制器功能都无法使用。我试图制作一个新的控制器,并且发生了同样的事情。 如何解决此问题?

2 个答案:

答案 0 :(得分:2)

将此更改为

Route::get('/units-notIn', 'UnitController@getUnitsNotIn');

您定义了一个资源控制器,因此此处以unit / notin为单位,notin这样定义一个id
它调用您的显示功能默认。

答案 1 :(得分:1)

由于apiResource(),它不起作用。资源路由采用/units/{id}。因此,当您呼叫/units/notIn路由时,假设notInid,而行动呼叫show()

您需要使用其他名称。

Route::get('/un/notIn', 'UnitController@getUnitsNotIn');

动词路径操作路线名称

GET /units/{id} show units.show