Laravel 4 使用WHERE子句查询ORM-雄辩/Laravel 4
有关守则载于: 我有嵌套的资源控制器,用于查询数据库中结构类似的表 如果我访问www.example.com/v1/jobs/1/departments,我想查询与作业1关联的所有部门。但是,我不知道如何使用ORM实现这一点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
帮助?我没有测试,但我建议您尝试以下方法:
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()代码>我想应该有用。