我試圖實現類似於Laravel的hasManyThrough
,但我不確定我的數據庫設置得當,或者我只是錯過了一些東西。試圖實現一個hasManyThrough類型的關係
我想顯示一個管理員頁面來顯示我們支持的所有網站。我想要一個簡單的專欄,顯示每個網站附加了多少客戶的獨特計數。爲此,我打算通過orders
表並檢索distinct
用戶列表,然後在我的視圖中簡單使用->count()
方法。
這是我的DB設置(簡化):
sites
表(主鍵: 'ID'):
id | ...
users
表(主鍵: 'ID'):
id | first_name | last_name | ...
orders
表(主鍵:'訂單'):
id | order | user_id | site_id | ....
Site
型號:
public function customers()
{
return $this->hasManyThrough('App\User', 'App\Order', 'site_id', ' id')->distinct();
}
我意識到的時候了,我的DB設置和文件之間的主要區別是我沒有一個order_id
在我users
表,但它沒有任何意義,我因爲用戶可以有很多訂單。
值得注意的是:我也有一個表user_orders
。我不確定是否應該使用它。 user_orders
具有以下設置:
id | user_id | order
你可以看到,它只是一箇中間表來保存用戶和訂單之間的連接(記得order
是訂單的PK,沒有ID)。
那麼,任何人都可以幫助我理解我做錯了什麼嗎?
爲什麼不選擇從訂單表中計數,並通過user_id和site_id來區分不同? – TheFallen
這引發了另一個問題,我如何將該查詢與我傳遞我的視圖的集合配對?因爲在我看來,我正在循環集合來創建錶行。 – Mark
你只需要數字?數據庫查詢將返回一個數組或類似的東西,你可以循環。 – TheFallen