Laravel 拉维API条件关系

Laravel 拉维API条件关系,laravel,Laravel,我正在构建一个Laravel应用程序,人们可以在其中阅读这本书,也喜欢这本书 图书资源 我想在用户模型中设置用户的include Favorited Book,以便在用户有Favorited和false时显示true 通过这样做,我能够在一本书的模型中做到这一点 public function showapi(Request $request, $book) { //$book = Book::find($book); $book = new BookResource(Boo

我正在构建一个Laravel应用程序,人们可以在其中阅读这本书,也喜欢这本书

图书资源

我想在用户模型中设置用户的include Favorited Book,以便在用户有Favorited和false时显示true

通过这样做,我能够在一本书的模型中做到这一点

public function showapi(Request $request, $book)
{

    //$book = Book::find($book);
    $book  = new BookResource(Book::find($book));
    $Fav = Favorite::where('book_id', $book->id)->where('user_id', $request->user_id)->exists();
    if($Fav) {
    return response()->json([
        'book' => $book, 
        'Favorited' => $Fav,
        ]
    );
  }
  else 
  return response()->json([
    'book' => $book, 
    'Favorited' => $Fav,
    ]
);
}

此集合被偏爱为真或假

但我想在寄送藏书时表现出我的好感

我已经尝试通过这样做来使用LaravelAPI资源关系

public function showapi(Request $request, $book)
{

    //$book = Book::find($book);
    $book  = new BookResource(Book::find($book));
    $Fav = Favorite::where('book_id', $book->id)->where('user_id', $request->user_id)->exists();
    if($Fav) {
    return response()->json([
        'book' => $book, 
        'Favorited' => $Fav,
        ]
    );
  }
  else 
  return response()->json([
    'book' => $book, 
    'Favorited' => $Fav,
    ]
);
我在使用邮递员进行测试时出错

首先对文件中的字符串调用成员函数

这是我的方法

public function indexapi()
{
  return BookResource::collection(Book::with('author')->Paginate(16));
}
这就是我的关系

用户模型

图书模型

**喜爱的模型**

public function book ()
{
    return $this->belongsTo(Book::class);
}

public function author()
{
    return $this->belongsTo(Author::class);
}

public function user()
{
    return $this->belongsTo(User::class);
}

您的书籍和用户之间存在多对多关系。这些对存储在中间表book_user中。只需向中间表book\u用户添加一个布尔列收藏夹

您可以这样访问它:

$user = App\User::find(1);

foreach ($user->books as $book) {
    echo $book->pivot->favorite;
}
阅读有关中间表的更多信息


您可能还想创建一个表示您最喜欢的模型的模型。

我不知道这是否是您问题的解决方案,但只想编辑您的模型,因为您在“模型”一书中遗漏了一部分

用户模型

图书模型

你最喜欢的班级


用户和书籍之间的关系是什么?是多对多吗?用户和书籍之间没有关系。我已经更新了我的问题对不起图书模型上的那个小错误,我已经编辑过了
public function favorites()
{
    return $this->hasMany(Favorite::class);
}
public function book ()
{
    return $this->belongsTo(Book::class);
}

public function author()
{
    return $this->belongsTo(Author::class);
}

public function user()
{
    return $this->belongsTo(User::class);
}
$user = App\User::find(1);

foreach ($user->books as $book) {
    echo $book->pivot->favorite;
}
    public function favorites(){
    return $this->hasMany(Favorite::class);
}

public function books()
{
    return $this->belongsToMany(Book::class);
}
public function favorites()
{
    return $this->hasMany(Favorite::class);
}
public function User()
{
    return $this->hasOne(User::class);
}
 public function book ()
{
    return $this->belongsTo(Book::class);
}

public function author()
{
    return $this->belongsTo(Author::class);
}

public function user()
{
    return $this->belongsTo(User::class);
}