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

質問編集履歴

3

書式改善

2019/12/01 15:25

投稿

spell
spell

スコア16

title CHANGED
File without changes
body CHANGED
@@ -20,7 +20,7 @@
20
20
  GROUP BY
21
21
  hoge1_column
22
22
  HAVING
23
- hoge3_column = 1 OR hoge2_column = 0 AND hoge_status = 1;
23
+ hoge3_column = 1 OR ( hoge2_column = 0 AND hoge_status = 1 );
24
24
  ```
25
25
  だったのですが、having以降の条件をscopeに出すために下記のようにEloquentで作成しました。
26
26
  ```Eloquent

2

HAVING条件表示修正

2019/12/01 15:24

投稿

spell
spell

スコア16

title CHANGED
File without changes
body CHANGED
@@ -20,9 +20,7 @@
20
20
  GROUP BY
21
21
  hoge1_column
22
22
  HAVING
23
- hoge3_column = 1
24
- OR
25
- hoge2_column = 0 AND hoge_status = 1;
23
+ hoge3_column = 1 OR hoge2_column = 0 AND hoge_status = 1;
26
24
  ```
27
25
  だったのですが、having以降の条件をscopeに出すために下記のようにEloquentで作成しました。
28
26
  ```Eloquent

1

SQL文修正及びカラム名修正

2019/12/01 15:17

投稿

spell
spell

スコア16

title CHANGED
File without changes
body CHANGED
@@ -3,50 +3,50 @@
3
3
  元々は
4
4
  ```mySQL
5
5
  SELECT
6
- hoge1
6
+ hoge1_column
7
- , hoge2
7
+ , hoge2_column
8
- , hoge3
8
+ , hoge3_column
9
9
  , LEAST( COALESCE( MIN( hoge1_flg ), 99 ), COALESCE( MIN( hoge2_flg ), 99 ), COALESCE( MIN( hoge3_flg ), 99 ) ) AS hoge_status
10
+ FROM
11
+ hoge
10
12
  LEFT JOIN
11
13
  hoge1 ON hoge.fuga = hoge1.fuga
12
14
  LEFT JOIN
13
15
  hoge2 ON hoge.fuga = hoge2.fuga
14
16
  LEFT JOIN
15
17
  hoge3 ON hoge.fuga = hoge3.fuga
16
- FROM
17
- hoge
18
18
  WHERE
19
19
  hoge_flg = 1
20
20
  GROUP BY
21
- hoge1
21
+ hoge1_column
22
22
  HAVING
23
- hoge3 = 1
23
+ hoge3_column = 1
24
24
  OR
25
- hoge2 = 0 AND hoge_status = 1;
25
+ hoge2_column = 0 AND hoge_status = 1;
26
26
  ```
27
27
  だったのですが、having以降の条件をscopeに出すために下記のようにEloquentで作成しました。
28
28
  ```Eloquent
29
- self::selectRaw( 'hoge1, hoge2, hoge3' )
29
+ self::selectRaw( 'hoge1_column, hoge2_column, hoge3_column' )
30
30
  ->selectRaw( 'LEAST( COALESCE( MIN( hoge1_flg ), 99 ), COALESCE( MIN( hoge2_flg ), 99 ), COALESCE( MIN( hoge3_flg ), 99 ) ) AS hoge_status' )
31
31
  ->leftJoin( 'hoge1', 'hoge.fuga', '=', 'hoge1.fuga' )
32
32
  ->leftJoin( 'hoge2', 'hoge.fuga', '=', 'hoge2.fuga' )
33
33
  ->leftJoin( 'hoge3', 'hoge.fuga', '=', 'hoge2.fuga' )
34
- ->groupBy( 'hoge1' )
34
+ ->groupBy( 'hoge1_column' )
35
35
  ->get();
36
36
  ```
37
37
  ここで条件を付加するために
38
38
  ```Eloquent
39
- having( 'hoge3', '=', '1' )
39
+ having( 'hoge3_column', '=', '1' )
40
40
  ```
41
41
  を追加したところ Unknown column が出たため
42
42
  ```Eloquent
43
- where( 'hoge3', '=', '1' )
43
+ where( 'hoge3_column', '=', '1' )
44
44
  ```
45
45
  とwhereを使うようにstackovweflowで見かけたため、変更しました。
46
46
  そちらは上手くいったのですが、
47
47
  hoge_statusを使うために
48
48
  ```Eloquent
49
- havingRaw( 'hoge2 = 0 AND hoge_status = 1' )
49
+ havingRaw( 'hoge2_column = 0 AND hoge_status = 1' )
50
50
  ```
51
51
  としたところUnknown column が出ます。
52
52
  whereRawに変えても同様のエラーがでます。