teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2019/04/28 07:50

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  リレーションを定義してデフォルトの Eager Loading 対象に指定すれば解決しますね。Laravel の設計思想を無視して JOIN するのはやや筋が悪いと思います。Eager Loading の場合2クエリになってしまいますが,件数を制限して取得するぶんには JOIN を使って1クエリにする場合に対してパフォーマンス面での欠点はありませんし,結果がごちゃまぜにならずにテーブルごとに分かれた状態で取得できるのはアーキテクチャ的に大きな利点です。
4
4
 
5
+ (そもそも Laravel のリレーションは多対多以外は JOIN を使用しませんが,そこの理解からあってますか…?)
6
+
5
7
  - [Eloquent:リレーション 5.8 Laravel](https://readouble.com/laravel/5.8/ja/eloquent-relationships.html)
6
8
  - [【Laravel】 第1回 Eloquent ソースコードリーディング - モデルの取得 - Qiita](https://qiita.com/mpyw/items/7c7e8dc665584122a275)
7
9
  - [【Laravel】 第2回 Eloquent ソースコードリーディング - リレーションの取得 - Qiita](https://qiita.com/mpyw/items/ed058e2d679a672c3ba7)

3

追記

2019/04/28 07:50

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > 例えば、一つのViewで扱うテーブルが複数の結合の場合、コントローラでJoinするのではなく、利用頻度が多いものはその結合したmodelを作成して利用した方が便利なのではないかと考えらえるのですが、この理解で良いかを教えてください。
2
2
 
3
- リレーションを定義してデフォルトの Eager Loading 対象に指定すれば解決しますね。Laravel の設計思想を無視して JOIN するのはやや筋が悪いと思います。
3
+ リレーションを定義してデフォルトの Eager Loading 対象に指定すれば解決しますね。Laravel の設計思想を無視して JOIN するのはやや筋が悪いと思います。Eager Loading の場合2クエリになってしまいますが,件数を制限して取得するぶんには JOIN を使って1クエリにする場合に対してパフォーマンス面での欠点はありませんし,結果がごちゃまぜにならずにテーブルごとに分かれた状態で取得できるのはアーキテクチャ的に大きな利点です。
4
4
 
5
5
  - [Eloquent:リレーション 5.8 Laravel](https://readouble.com/laravel/5.8/ja/eloquent-relationships.html)
6
6
  - [【Laravel】 第1回 Eloquent ソースコードリーディング - モデルの取得 - Qiita](https://qiita.com/mpyw/items/7c7e8dc665584122a275)

2

リンク

2019/04/28 07:44

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  リレーションを定義してデフォルトの Eager Loading 対象に指定すれば解決しますね。Laravel の設計思想を無視して JOIN するのはやや筋が悪いと思います。
4
4
 
5
+ - [Eloquent:リレーション 5.8 Laravel](https://readouble.com/laravel/5.8/ja/eloquent-relationships.html)
5
6
  - [【Laravel】 第1回 Eloquent ソースコードリーディング - モデルの取得 - Qiita](https://qiita.com/mpyw/items/7c7e8dc665584122a275)
6
7
  - [【Laravel】 第2回 Eloquent ソースコードリーディング - リレーションの取得 - Qiita](https://qiita.com/mpyw/items/ed058e2d679a672c3ba7)
7
8
 

1

追記

2019/04/28 07:42

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -29,4 +29,4 @@
29
29
  }
30
30
  ```
31
31
 
32
- あと `accounts_id` は命名規約を無視しているので単数形の `account_id` に揃えるべきですね。
32
+ あと `accounts_id` は命名規約を無視しているので単数形の `account_id` に揃えるべきですね。(`account_id` ならばリレーション定義時の第2引数も省略できます)