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

Laravel 4 使用WHERE子句查询ORM-雄辩/Laravel 4,laravel-4,eloquent,Laravel 4,Eloquent,有关守则载于: 我有嵌套的资源控制器,用于查询数据库中结构类似的表 如果我访问www.example.com/v1/jobs/1/departments,我想查询与作业1关联的所有部门。但是,我不知道如何使用ORM实现这一点 帮助?我没有测试,但我建议您尝试以下方法: Route::resource('/v1/jobs/{id}/departments', 'DepartmentController'); Route::resource('/v1/jobs', 'JobControlle

有关守则载于:

我有嵌套的资源控制器,用于查询数据库中结构类似的表

如果我访问www.example.com/v1/jobs/1/departments,我想查询与作业1关联的所有部门。但是,我不知道如何使用ORM实现这一点


帮助?

我没有测试,但我建议您尝试以下方法:

Route::resource('/v1/jobs/{id}/departments', 'DepartmentController');    
Route::resource('/v1/jobs', 'JobController');
之后,DepartmentController方法将收到一个参数,在您的案例中是作业id。如果使用
id
检索任何特定模型,则使用
find()
方法更容易。找到模型后,可以访问相关模型

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()
(返回生成器对象以创建更复杂的查询)和
$job->departments
(直接返回集合对象)之间存在差异

此外,如果您想获得所有相关部门的工作列表,您可以随时致电:

$jobs = Auth::user()->jobs()->with('departments')->get();

您的
作业
表没有声明与
部门的关系
。你必须在你的
作业
模型上这样做。我很困惑,在我的Jobs.php(模型)中,它声明:公共职能部门(){return$this->hasMany('Department');}这不是我需要的吗?应该是的。这样不行吗?如果没有,也发布您的模型代码。我的模型代码就在这个要点中,在Jobs.php和Department.phpThanks下。对于这一点,它很有帮助,但是afaik find()函数根据主键查找$jobId的索引值,但是$jobId不是唯一的,也不是主键(对于该用户来说,它是唯一的)。好的。无论如何
Auth::user()->jobs()->where('job_id',$jobId)->with('departments')->get()我想应该有用。