我建立了一个查询,其中使用“ with”来包含相关模型。但是,我不确定如何在where子句中过滤那些相关模型。
0.9933992677987827
请注意查询中的with(“ projectLeaders”)。因此,ProjectLeaders是一个带来Employee类对象的关系,如何在该查询中过滤属性“姓氏”类似于“ Smith”的那些“ Employees”?
答案 0 :(得分:1)
您可以实现两个表的where类。请检查以下代码和注释。
return \App\Proyecto::with(["projectLeaders" => function($query){
$query->where() //if condition with inner table.
}])->join('empresas', 'id_empresa', '=', 'empresas.id')
->join('tipo_estado_proyecto', 'tipo_estado_proyecto.id', '=', 'proyectos.id_tipo_estado_proyecto')
->where() //if condition with main table column.
->select('empresas.*', 'tipo_estado_proyecto.nombre AS nombreEstadoProyecto', 'proyectos.*');
答案 1 :(得分:1)
使用rake db:drop
rake db:create
rake db:migrate
访问关系时,可以使用Closure
。检查下面的代码以获取更多详细信息:
with
答案 2 :(得分:0)
您可以在查询构建器实例上使用where
方法向查询中添加where
子句。到最基本的通话需要三个参数。第一个参数是列名。第二个参数是一个操作符,它可以是任何数据库支持的运营商。最后,第三个参数是要对该列求值的值。
return \App\Project::with("projectLeaders")->join('companies', 'company_id', '=', 'companies.id')
->join('project_status', 'project_status.id', '=', 'projects.status_id')
->where('lastname','=','Smith')
->select('companies.*', 'project_status.name AS statusName', 'projects.*');
别忘了用get()
返回结果;
答案 3 :(得分:0)
对不起,我晚答复
查询您的书写是否正确
但是在构建查询后,您需要从数据库中获取数据
方法一
因此向您的查询添加get()
方法
return App\Project::with('projectLeaders')
->leftJoin('companies', 'company_id', '=', 'companies.id')
->leftJoin('project_status', 'project_status.id', '=', 'projects.status_id')
->select('companies.*', 'project_status.name AS statusName', 'projects.*')
->get();
方法二(带有分页)
return App\Project::with('projectLeaders')
->leftJoin('companies', 'company_id', '=', 'companies.id')
->leftJoin('project_status', 'project_status.id', '=', 'projects.status_id')
->select('companies.*', 'project_status.name AS statusName', 'projects.*')
->paginate(3);
希望有帮助