我创建了一个页面,显示当前登录教师的学生。用户可以输入搜索并根据搜索获得学生。
我写了这个函数:
_G
但是当用户键入搜索值并点击提交时。显示所有用户的所有学生,而不仅仅是登录用户。
我确实尝试将public function search(){
$q = Input::get( 'q' );
if($q != ""){
$students = Students::where( 'user_id', '=', auth()->user()->id )->where( 'first_name', 'LIKE', '%' . $q . '%' )->orWhere ( 'subject', 'LIKE', '%' . $q . '%' )->orWhere ( 'class', 'LIKE', '%' . $q . '%' )->orWhere ( 'status', 'LIKE', '%' . $q . '%' )->paginate (15)->setPath ('');
$pagination = $students ->appends ( array (
'q' => Input::get ( 'q' )
) );
if (count ( $seq ) > 0)
return view ( 'students' )->with( 'seq' , $students )->withQuery ( $q );
}
return view ( 'students' )->withMessage ( 'No Details found. Try to search again !' );
}
放在每个auth()->user()->id
子句中,但它似乎不起作用。我在哪里放置这个,所以只有登录用户才能查看属于他的学生?
答案 0 :(得分:0)
您的查询会检查user_id
是否匹配或搜索字词是否匹配。
您必须使用闭包嵌套WHERE
约束:
$students = Students::where('user_id', '=', auth()->user()->id )
->where(function($query) use($q) {
$query->where('first_name', 'LIKE', '%' . $q . '%')
->orWhere('subject', 'LIKE', '%' . $q . '%')
->orWhere('class', 'LIKE', '%' . $q . '%')
->orWhere('status', 'LIKE', '%' . $q . '%');
})
->paginate(15)->setPath('');