在Laravel中只获取相关项

后端开发 2026-07-11

在我的模型中
Models/Book.php
我实现了这个关系

 public function getBook() {
    return $this->hasOne(BookCover::class, 'book_id', 'id');
}

在我的控制器中

 public function getBookCover() {
    $bookCover = Book::with('getBook')->get();
    return response()->json(
        $bookCover
    );

它将返回

{
    "id": 1,
    "uuid": "89833855-5777-4baf-9218-2c715619dd9b",
    "created_at": "2023-01-10T08:00:00.000000Z",
    "updated_at": "2023-01-10T08:00:00.000000Z",
    "get_book": {
      "id": 1,
      "uuid": "32eb81d7-d36d-4333-ba59-f40a3809dc71",
      "created_at": "2023-01-10T08:00:00.000000Z",
      "updated_at": "2023-01-10T08:00:00.000000Z",
      "book_name": "في أعماق الصمت",
      "book_image": "https://www.noor-book.com/publice/covers_cache_webp/2/5/d/6/6d212d49275d67ffe387771061a711fa.jpg.webp",
      "book_rate": 5,
      "book_page_number": 210,
      "book_description": "رواية فلسفية تستكشف معنى الوجود والصمت الداخلي في عالم مليء بالضجيج، تأخذ القارئ في رحلة روحية عميقة.",
      "book_id": 1,
      "views": "0",
      "category_id": 5
    }

我只想获取get_book

解决方案

仅对关系进行Pluck(最佳且最干净)

public function getBookCover() {
    $bookCover = Book::with('getBook')->get()->pluck('getBook');
    return response()->json($bookCover);
}
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章