查询搜索LIKE使用关键字where和left join LARAVEL 5

时间:2017-06-08 07:42:39

标签: laravel join laravel-5.2

我想根据用户中包含的名称从两个表中查找数据,但是我遇到了问题。 这是包含id和name的users表。 这是包含id和user_id的student表。 user_id student = id users。

public function search(Request $request)
{
  $keywords   = trim($request->input('keywords'));

  if (!empty($keywords)) { 
      $id_class       = $request->input('id_class');

    //Query
    $query = User()
    ->leftjoin('student', 'users.id', '=', 'student.user_id')
    ->where('users.name', 'LIKE', '%' . $keywords . '%');

    (!empty($id_class)) ? $query->Kelas($id_class) : ''; 
    $data_student = $query->paginate(10); 

    //URL link pagination
    $pagination = (!empty($id_class)) ? $pagination = $data_student->appends(['id_class' => $id_class]) : '';
    $pagination = $data_student->appends(['keywords' => $keywords]);

    $amount_data = $=data_student->total();
    return view('student.index', compact('data_student', 'keywords', 'pagination', 'amount_data', 'id_class'));
   }
   return redirect('student');
}

调用未定义的函数App \ Http \ Controllers \ User()

1 个答案:

答案 0 :(得分:2)

如前所述,您需要正确引用带有命名空间的User类,您还需要更改以下内容:

 $query = User()
    ->leftjoin('student', 'users.id', '=', 'student.user_id')
    ->where('users.name', 'LIKE', '%' . $keywords . '%');

为:

$query = User::leftjoin('student', 'users.id', '=', 'student.user_id')
    ->where('users.name', 'LIKE', '%' . $keywords . '%');

您必须使用::将该类的第一个方法称为静态。

另外另一个可能加入表student的错误应该是复数; students