免責事項:私は一般的にSQLの初心者です。Laravel - 関係を使用してこのSQLクエリを書き換える
多対多の関係を持つ2つのテーブルがあるため、ピボットテーブルを作成しました。
テーブルは以下の通りです:枚、スタイル、およびsheet_style。
- 私
Sheet
モデルは私のStyle
モデルは、私は現在、1の要求を記述しようとしているsheets()
方法(BelongsToMany
関係)
を持ってstyles()
方法(BelongsToMany
関係)
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 [];
}
しかし、これは本当に"最適化されていない" と思われる:ここ
は私が思いついたものです。どこでもforeach
のループを作成することなく、MySQLでのみこれを達成する方法はありますか?あるいは、私が設定した関係を使う方法がありますか?
ntroller、私はうそはなかった:Pのおかげで多くは、それは:)作品 – Gefn
私はそれが助けてくれてうれしいです。 :) –