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

回答編集履歴

1

クエリメソッドの役割

2021/10/05 07:44

投稿

FKM
FKM

スコア3660

answer CHANGED
@@ -1,16 +1,16 @@
1
- SQLのサブクエリ違反です。このメソッドに従ってSQLを構築した場合、これでサブクエリが複数になるとエラーが生じます。
1
+ SQLのサブクエリ(副問合せ)違反です。このメソッドに従ってSQLを構築した場合、これでサブクエリが複数になる(Bテーブル内のidが複数の場合、イコール演算子は使えない)とエラーが生じます。
2
2
 
3
3
  ```sql
4
4
  select * from A where id = (select id from B)
5
5
  ```
6
6
 
7
- この場合はinで対応しないといけません
7
+ このようにサブクエリを複数返す場合はin演算子で対応しないといけません
8
8
 
9
9
  ```
10
10
  select * from A where id in (select id from B)
11
11
  ```
12
12
 
13
- これを踏まえて、Laravelでinに対応したメソッドを探すと`whereIn`というのがあるので、それを活用して下さい。
13
+ これを踏まえて、Laravelでinに対応したメソッドを探すと`whereIn`というのがあるので、それを活用して下さい。LaravelのクエリメソッドはあくまでSQLを構築するためのメソッドなので、SQLの規約違反の処理は当然できません。
14
14
 
15
15
  ```sql
16
16
  $order = Post::select("amount")