【发布时间】:2020-07-17 14:16:18
【问题描述】:
考虑到一对多的关系,基本上我想在 mysql 中的两个表上运行一个非常简单的数据库选择查询。
类别:此表包含所有产品类别。 主键是“id”。它有一列“url”,其中包含如何访问此类别的字符串,例如“贺卡”。
产品:此表包含所有产品,而每个产品都有一个类别 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 粘贴到数据库查询中......我知道这是可能的,但我认为应该有更优雅的方法口才好?
非常感谢!
【问题讨论】:
-
$products = \App\Category::where('url', $category)->first()->products;
标签: php mysql database laravel eloquent