基本上我想在 mysql 中的兩個表中運行一個非常簡單的數(shù)據(jù)庫選擇查詢,考慮一對多關(guān)系。categories:該表包含所有產(chǎn)品類別。主鍵是“id”。它有一列“url”,其中包含如何訪問該類別的字符串,例如“greeting-cards”。products:該表包含所有產(chǎn)品,而每個產(chǎn)品都有一個類別 id。主鍵是“id”。它有一列“category_id”,代表產(chǎn)品對應(yīng)的類別的id。因此,根據(jù) Eloquent ORM 的文檔,我這樣做了:$products = \App\Category::find($CATEGORY_ID)->products);它的作用就像一個魅力?,F(xiàn)在的問題是:訪問網(wǎng)頁時,URL 不是這樣的:www.domain.tld/categories/123然而,由于 SEO,它看起來像這樣:www.domain.tld/categories/greeting-cards因此,我將數(shù)據(jù)庫查詢修改如下:$products = \App\Category::where('url', $category)->products);但這是行不通的!我是否正確地看到我必須使用 find() 并在這里放置 where() 方法是錯誤的?在 Eloquent 中還有其他方法可以做到這一點嗎?我不喜歡使用第二個數(shù)據(jù)庫查詢來獲取相應(yīng)類別 url 的 ID,然后將此 id 粘貼到數(shù)據(jù)庫查詢中...我知道這是可能的,但我認為應(yīng)該有更優(yōu)雅的方法雄辯?太感謝了!
1 回答

阿晨1998
TA貢獻2037條經(jīng)驗 獲得超6個贊
您必須檢索模型才能使用其關(guān)系。
如果你想使用where()
只需調(diào)用first()
:
例子:
\App\Category::where('url',?$category)->first()->products
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報
0/150
提交
取消