为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel Eloquent ORM:可以在不使用 find() 的情况下从两个表中进行选择吗?

Laravel Eloquent ORM:可以在不使用 find() 的情况下从两个表中进行选择吗?

PHP
杨魅力 2023-08-11 11:03:47
基本上我想在 mysql 中的两个表中运行一个非常简单的数据库选择查询,考虑一对多关系。categories:该表包含所有产品类别。主键是“id”。它有一列“url”,其中包含如何访问该类别的字符串,例如“greeting-cards”。products:该表包含所有产品,而每个产品都有一个类别 id。主键是“id”。它有一列“category_id”,代表产品对应的类别的id。因此,根据 Eloquent ORM 的文档,我这样做了:$products = \App\Category::find($CATEGORY_ID)->products);它的作用就像一个魅力。现在的问题是:访问网页时,URL 不是这样的:www.domain.tld/categories/123然而,由于 SEO,它看起来像这样:www.domain.tld/categories/greeting-cards因此,我将数据库查询修改如下:$products = \App\Category::where('url', $category)->products);但这是行不通的!我是否正确地看到我必须使用 find() 并在这里放置 where() 方法是错误的?在 Eloquent 中还有其他方法可以做到这一点吗?我不喜欢使用第二个数据库查询来获取相应类别 url 的 ID,然后将此 id 粘贴到数据库查询中...我知道这是可能的,但我认为应该有更优雅的方法雄辩?太感谢了!
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

您必须检索模型才能使用其关系。

如果你想使用where()只需调用first()

例子:

\App\Category::where('url', $category)->first()->products


查看完整回答
反对 回复 2023-08-11
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信