使用WHERE子句查询ORM - Eloquent / Laravel 4

时间:2014-02-27 18:35:59

标签: laravel-4 eloquent

相关代码位于:https://gist.github.com/morganhein/9254678

我有嵌套的资源控制器,它们在数据库中查询类似结构的表。

如果我访问www.example.com/v1/jobs/1/departments,我想查询与作业1相关的所有部门。但是我无法弄清楚如何使用ORM来做到这一点。

帮助?

1 个答案:

答案 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();