当前位置: 首页 > 知识库问答 >
问题:

如何在laravel中通过外键检索记录的完整数据?

鲜于璞瑜
2023-03-14

我一直在试图找到通过外键从记录中获取所有数据的正确方法。我有一个简单的应用程序,用户可以将书籍添加到他们的“书架”。

这是我的桌子:

使用者

ID   |   NAME   | 

ID   |   PAGES   |   NUMBER_OF_CHAPTERS

书架

ID   |   USER_ID (foreign key to `users.id`)   | 

BOOKSHELF_BOOKS

ID   |   BOOKSHELF_ID (foreign key to `bookshelf.id`)   | BOOKS_ID (foreign key to `books.id`)

在我雄辩的模型中,一个书架有许多书,而书架上的书属于书架,我已经在我的模型中设置了这些书。

用户创建一个“书架”并从图书列表中向其中添加图书。

我现在需要在书架上渲染用户的书籍。

当我使用类似bookshelf::find($id)的调用检索书架上的书籍时-

当我查询书架上的书时,我想返回的是书本身的所有数据,而不仅仅是它的id。[{"book_id": 1,"页": 364,"number_of_chapters": 14},{"book_id": 2,"页": 211,"number_of_chapters": 9}]。

我一整天都在挠头,想弄明白如何在Laravel/雄辩的ORM中进一步“加入”。

我很乐意帮忙,谢谢!!

共有3个答案

吴兴国
2023-03-14

你所拥有的应该是正确的。

$bookshelf=bookshelf::find($id)-

要获取书籍,您需要创建一个循环。。。

@foreach($bookshelf->books as $book)
   {{ $book->name }}
   {{ $book->title }}
@endforeach

更进一步来说,如果你有一个作者模型,你的书将属于它(),你甚至可以做这样的事情...

@foreach($bookshelf->books as $book)
   {{ $book->name }}
   {{ $book->title }}
   {{ $book->author->name }}
@endforeach
仲孙德惠
2023-03-14

手动操作并构建自己的阵列怎么样。

  $bookshelf = Bookshelf::find($id)->books;
  $thebooks = array();

  foreach($bookshelf as $val){
  $book = Book::find($val->book_id);
  $thebooks[] = $book;
  }

然后将$thebooks返回到视图。这将是一系列书籍模型。

张坚白
2023-03-14

只是急切地加载关系

改变

Bookshelf::find($id)->books

Bookshelf::with('books')->find($id)->books
 类似资料:
  • 如何在Laravel中检索数据。 我有表用户,其中我有字段parent_id,其中我显示其user_id的信息。 现在我想显示已登录用户的信息 我试过这个 我得到了选定的parent_id,现在我想要user_id的名字。 我在试这个 它得到一个错误。请告诉我如何在我的代码中写这个来获得父id的名称。

  • 表模式 用户模型 下面是我在Laravel 5中的代码 错误消息 SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“user.id”(SQL:select*fromwhere=1限制1)

  • 我试图从一个连接表中获取数据并显示它,所以我有一个用户表和我的连接表。处方用户表具有用户id和处方id。 所以我要做的是在这个userdetails页面上,显示所有的用户处方,并访问处方名称和描述等,但是当我尝试任何一种方法时,我会得到“尝试获取非对象的属性” 我认为,用户模型与处方用户模型有很多关系,处方用户模型与用户模型有一个归属关系。 控制器 用户详细信息刀片

  • 考虑到Laravel指南中的基本示例有许多通过关系,我试图直接查询雄辩的、帖子类型为100的国家(只是一个例子)。 type_id是我的特例... 因此,我在country模型中创建了一个关系,通过用户创建了与帖子的关系。我想要实现的结果是列出一个国家,以及每个国家内由该国用户创建的帖子。 我能够以其他方式复制我想要实现的结果,但是我想知道为什么下面雄辩的查询没有返回预期的结果: 查询的返回是几个

  • 问题内容: 我有两个域,是一对多关系中的一部分。我想知道如何查询孩​​子的父母FK吗?贝娄是父母/孩子的伪代码 上级: 儿童: 尽管我没有明确创建FK,但是grails会自行创建MySQL数据库。但是,当我想像这样通过FK查询孩子时: 我收到一个错误:找不到类[class mgr.AlumLanguage]的名称[alumProfileId]的属性 关于如何做到这一点的任何建议? 谢谢杰森 问题答

  • 问题内容: 我将Firebase,后端即服务用于我的网站应用程序,并通过AngularJS进行编程。 我想使用数据库查询来获取记录,例如: 我在Firebase服务器中具有电视连续剧数组 JSON CODE : 我现在使用的代码来解决这个问题: 我想在不使用和的情况下解决这个问题。我应该怎么做? 就像这样: 问题答案: 我有一些建议可能会帮助您: 查阅Firebase查询文档。特别, 您可以结合使