Laravel Eloquent如何检索登录用户的记录

时间:2018-04-17 21:27:23

标签: laravel-5

我创建了一个页面,显示当前登录教师的学生。用户可以输入搜索并根据搜索获得学生。

我写了这个函数:

_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子句中,但它似乎不起作用。我在哪里放置这个,所以只有登录用户才能查看属于他的学生?

1 个答案:

答案 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('');