programing

현재 로그인한 사용자를 제외한 모든 사용자를 수준 높은 웅변으로 가져옵니다.

yellowcard 2023. 9. 27. 17:41
반응형

현재 로그인한 사용자를 제외한 모든 사용자를 수준 높은 웅변으로 가져옵니다.

하고 있습니다.

    User::all();

사용자 테이블에서 모든 사용자를 가져옵니다.현재 로그인한 사용자를 제외한 모든 사용자를 선택하고 싶습니다.어떻게 해야 할까요? 이런 거.

    User::where('id','!=',$currentUser->id)->get();

미리 감사드립니다!

사용.except()조금 더 유창하게 같은 일을 해낼 것입니다.

$users = User::all()->except(Auth::id());

...또는 사용자 ID를 이미 가지고 있으므로:

$users = User::all()->except($currentUser->id);

현재 사용자의 ID를 얻을 수 있습니다.auth()->id(). 그런 다음 쿼리에 전달합니다.

$users = User::where('id', '!=', auth()->id())->get();

Auth 도우미를 사용하는 경우 이 작업을 사용합니다.

User::where('id', '!=', Auth::user()->id)->get();
App\Models\User::whereKeyNot(auth()->id)->get()

'except'를 사용하면 실제로 모든 사용자를 검색한 다음 컬렉션에 대한 추가 작업을 수행하여 현재 사용자를 제거할 수 있으므로 효과적이지 않습니다.

Use Auth;
Use App\User;

public function index()
$id = Auth::id();
$result = User::where('id', '!=', $id)->get();
dd($result);

더 좋은 답은 사용하는 것입니다.whereNotIn원치 않는 기록을 전혀 검색하지 않도록 할 것입니다.
승인된 답변은 모든 내용을 검색한 다음 필터링합니다.

$user_ids_to_exclude = $users_collection->pluck('id')->toArray();

$this->filtered_posts = Post::latest('published_at')
    ->whereNotIn('author_id', $user_ids_to_exclude) # This part
    ->get();

언급URL : https://stackoverflow.com/questions/24613565/get-all-the-users-except-current-logged-in-user-in-laravel-eloquent

반응형