繁体   English   中英

Laravel Eloquent ORM:Select 从两个表中找到可能吗?

[英]Laravel Eloquent ORM: Select from two tables without using find() possible?

基本上,考虑到一对多的关系,我想在 mysql 的两个表中运行一个非常简单的数据库 select 查询。

类别:此表包含所有产品类别。 主键是 "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 粘贴到数据库查询中......我知道这是可能的,但我认为应该有更优雅的方法Eloquent?

太感谢了!

您必须检索 model 才能使用它的关系。

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

例子:

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

Laravel 的文档中提供了更多方法: 检索单个模型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM