Laravel 如何显示与用户无关的所有书籍。多对多关系

Laravel 如何显示与用户无关的所有书籍。多对多关系,laravel,eloquent,Laravel,Eloquent,我的数据库中有3个表。用户、书籍和书籍用户。 book_user是一个数据透视表,用于管理用户和书籍之间的多对多关系 我已经正确设置了Laravel关系,并且我能够在Laravel中使用以下内容显示与用户关联的所有书籍 $user = Auth::user(); return response()->json($user->books()->get()); 现在,我试图显示与特定用户无关的所有书籍。我已经挣扎了很长时间,似乎找不到任何有效的方法。任何提示都将不胜感激

我的数据库中有3个表。用户、书籍和书籍用户。
book_user是一个数据透视表,用于管理用户和书籍之间的多对多关系

我已经正确设置了Laravel关系,并且我能够在Laravel中使用以下内容显示与用户关联的所有书籍

   $user = Auth::user();
  return response()->json($user->books()->get());

现在,我试图显示与特定用户无关的所有书籍。我已经挣扎了很长时间,似乎找不到任何有效的方法。任何提示都将不胜感激。

如果该书与用户无关,则您不应尝试通过用户检索该书。而是使用书本模型:

Book::whereDoesntHave('users', function ($q) {
      $q->where('id', \Auth::id());
})->get();

如果您希望所有书籍不属于任何用户,而不是所有不属于特定用户的书籍,您可以执行以下操作:

$books = Book::whereDoesntExists(function($query) {
    $query->select('book_user.id_book')
          ->from('book_user')
          ->where('book_user.id_book', '=', 'books.id');
    // Assuming that the columns on the pivot table are 'id_book' and 'id_user' and the primary key is 'id' in the 'books' table.
});

在这里,您将获取在book\u user pivot表的id\u book列中没有id的所有书籍。因此,基本上,所有的书都不属于任何用户。

您好,谢谢您的回复。我试图显示不属于特定用户的所有书籍。不过你对桌子名称的假设是正确的:)你好,马特。老兄,我真的爱你。非常感谢。