相关代码位于:https://gist.github.com/morganhein/9254678
我有嵌套的资源控制器,它们在数据库中查询类似结构的表。
如果我访问www.example.com/v1/jobs/1/departments,我想查询与作业1相关的所有部门。但是我无法弄清楚如何使用ORM来做到这一点。
帮助?
答案 0 :(得分:1)
我没有测试,但我建议你尝试这样的事情:
Route::resource('/v1/jobs/{id}/departments', 'DepartmentController');
Route::resource('/v1/jobs', 'JobController');
之后,您的DepartmentController方法将收到一个参数,在您的情况下是作业ID。如果您使用find()
检索任何特定模型,则使用id
方法会更容易。找到模型后,您可以访问相关模型。
class DepartmentsController extends BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index($jobId)
{
Clockwork::startEvent('List_Default_Departments', 'Starting.');
$positions = Auth::user()->jobs()->find($jobId)->departments;
Clockwork::endEvent('List_Default_Departments', 'Done.');
return Response::json($positions->toArray());
}
}
注意:$job->departments()
(返回Builder对象以创建更复杂的查询)和$job->departments
(直接返回Collection对象)之间存在差异。
此外,如果您想获得所有相关部门的工作清单,您可以随时致电:
$jobs = Auth::user()->jobs()->with('departments')->get();