query search LIKE 使用关键字 where 和 left join LARAVEL 5

query search LIKE use keywords where and left join LARAVEL 5

我想根据用户中包含的名称从两个 table 中查找数据,但我遇到了问题。 这是包含 ID 和名称的用户 table。 这是包含 id 和 user_id 的学生 table。 其中 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()

如前所述,您需要使用命名空间正确引用用户 class,您还需要更改以下内容:

 $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 . '%');

您必须使用 :: 静态调用 class 上的第一个方法。

还有一个潜在的错字,你加入 table student 应该是复数; students?