聲明:我是一般SQL中的絕對新手。Laravel - 使用關係重寫這個SQL查詢
我有2個表具有多對多的關係,因此我創建了一個數據透視表。
的表格如下:片,樣式,和sheet_style。
- 我
Sheet
模型具有styles()
方法(BelongsToMany
關係) - 我
Style
模型具有sheets()
方法(BelongsToMany
關係)
我目前正試圖寫一個請求,1給定風格名稱,它會檢索相應的表。
這裏是我想出了:
protected function getSheetsFromStyle($style_name) {
$style = Style::where('name', $style_name)->first();
if($style != null) {
$entries = \DB::table('sheet_style')->where('style_id', $style->id)->get();
$corresp_sheet_ids = [];
foreach($entries as $entry) {
array_push($corresp_sheet_ids, $entry->sheet_id);
}
$corresp_sheets = [];
foreach($corresp_sheet_ids as $s_id) {
array_push($corresp_sheets, Sheet::where('id', $s_id)->first());
}
return $corresp_sheets;
}
return [];
}
然而,這似乎真的「未優化」。有沒有辦法在MySQL中實現這一點,而不必在任何地方創建foreach
循環?或者,有沒有辦法使用我設定的關係?
當我說我是一個總的新手,我沒騙:P謝謝你,它的工作原理:) – Gefn
我很高興它幫助。 :) –