微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel Lumen eloquent left join 返回连接表数据而不是主要数据

如何解决Laravel Lumen eloquent left join 返回连接表数据而不是主要数据

我有两张表公司和课程表 该表有以下字段

 companies table
  id,full_name,email,deleted_at

和课程表

 courses table
  id,company_id,course_name,deleted_at

现在我想检索没有删除公司的所有课程。所以在我的控制器中我添加

public function index(Request $request){

  $query = Courses::query();
  $query = $query->leftJoin('companies','companies.id','=','courses.company_id');
  $query->whereNull('companies.deleted_at');
  if($request->get('filter_name')){
    $query = $query->where('courses.name','like','%' . $request->get('filter_name') . '%');
  }
 
  return  response()->json($query->paginate($request->get("perPage")));  
}
    

当我运行上述程序时,它返回公司数据而不是课程。我哪里出错了或者我错过了什么?

解决方法

如果您在两个模型中都使用了预先加载,则可以使用这种方法。

$all_course = Courses::with(['company',function($query) {
                            return $query->whereNotNull('deleted_at');
                       }])->get();

如您所见,我在 Courses 模型中查询以返回所有课程,但我在 company 关系中添加了一些过滤器。其中,我使用 whereNotNull 仅获取未删除的公司。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。