質問編集履歴

3

code用の引用符で囲みました。

2017/10/03 05:40

投稿

panpan
panpan

スコア7

test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,8 @@
32
32
 
33
33
 
34
34
 
35
+ ```
36
+
35
37
  public function latest_modelB()
36
38
 
37
39
  {
@@ -40,17 +42,23 @@
40
42
 
41
43
  }
42
44
 
45
+ ```
46
+
43
47
 
44
48
 
45
49
  そして、hasWhereを使ってみました。
46
50
 
47
51
 
48
52
 
53
+ ```
54
+
49
55
  $query->hasWhere('latest_modelB', function($subquery){
50
56
 
51
57
  $subquery->where('columnA', 1);
52
58
 
53
59
  })
60
+
61
+ ```
54
62
 
55
63
 
56
64
 
@@ -59,6 +67,8 @@
59
67
  2)leftjoin()を使用
60
68
 
61
69
 
70
+
71
+ ```
62
72
 
63
73
  $query->leftJoin('modelB_no_table', function ($join) {
64
74
 
@@ -69,6 +79,8 @@
69
79
  })
70
80
 
71
81
  ->where('modelB_no_table.columnA', 1);
82
+
83
+ ```
72
84
 
73
85
 
74
86
 

2

誤字の訂正

2017/10/03 05:40

投稿

panpan
panpan

スコア7

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- 取り急ぎ、試したことを2つ追加させていただきます。いずれも最新レコードだけが抽出対象とならず、すべてのModelBから抽出れてしまいました。
21
+ 取り急ぎ、試したことを2つ追加させていただきます。いずれも最新レコードだけが抽出対象とならず、すべてのModelBから抽出れてしまいました。
22
22
 
23
23
 
24
24
 

1

試したことを追加しました。

2017/10/03 02:04

投稿

panpan
panpan

スコア7

test CHANGED
File without changes
test CHANGED
@@ -11,3 +11,73 @@
11
11
 
12
12
 
13
13
  よろしくお願いします。
14
+
15
+
16
+
17
+ (追記)
18
+
19
+
20
+
21
+ 取り急ぎ、試したことを2つ追加させていただきます。いずれも最新レコードだけが抽出対象とならず、すべてのModelBから抽出サれてしまいました。
22
+
23
+
24
+
25
+
26
+
27
+ 1)リレーションの追加
28
+
29
+
30
+
31
+ modelAの定義に以下を追加。
32
+
33
+
34
+
35
+ public function latest_modelB()
36
+
37
+ {
38
+
39
+ return $this->hasOne('App\Models\Eloquent\modelB', 'projectId', 'id')->orderBy('created_at', 'desc')->take(1);
40
+
41
+ }
42
+
43
+
44
+
45
+ そして、hasWhereを使ってみました。
46
+
47
+
48
+
49
+ $query->hasWhere('latest_modelB', function($subquery){
50
+
51
+ $subquery->where('columnA', 1);
52
+
53
+ })
54
+
55
+
56
+
57
+
58
+
59
+ 2)leftjoin()を使用
60
+
61
+
62
+
63
+ $query->leftJoin('modelB_no_table', function ($join) {
64
+
65
+ $join->on('modelB_no_table.modelAId', '=', 'modelA_no_table.id')
66
+
67
+ ->orderBy('id', 'desc')->take(1);
68
+
69
+ })
70
+
71
+ ->where('modelB_no_table.columnA', 1);
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ まだ、上手くはいってないのですが、modelBのmax('id')をサブクエリのwhereで使えないかなと思い、試行錯誤していますが、うまくSQLを構築できません。
80
+
81
+
82
+
83
+ 試したことは以上になります。引き続き、よろしくお願いします。