簡體   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