質問編集履歴

2

文言の微調整

2017/06/05 23:14

投稿

kenkbou
kenkbou

スコア151

test CHANGED
File without changes
test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
  foreach ($query as $i => $job) {
84
84
 
85
- // 募集 = 予約は除外
85
+ // jobのmax = assign数の場合は除外
86
86
 
87
87
  $num = $job->get_assign_num($job->id);
88
88
 
@@ -90,7 +90,7 @@
90
90
 
91
91
 
92
92
 
93
- // 自身が予約済みのjobは除外
93
+ // 自身がassign済みのjobは除外
94
94
 
95
95
  $res = $this->Jobs->check_my_assign($job->id, $this->Auth->user('id'));
96
96
 

1

具体的なコードの掲示

2017/06/05 23:14

投稿

kenkbou
kenkbou

スコア151

test CHANGED
File without changes
test CHANGED
@@ -48,6 +48,72 @@
48
48
 
49
49
  ```
50
50
 
51
+ 追記
52
+
53
+ 具体的には以下のコードを一度のクエリで実現をしたいです。
54
+
55
+ 理由はpaginateコンポーネントが使用出来ないからです。
56
+
57
+ もしく$job_listをオブジェクトに変換してpaginateが使えるようでしたらその方法でも大丈夫です。
58
+
59
+
60
+
61
+ ```PHP
62
+
63
+ $query = $this->Jobs->find('search', [
64
+
65
+ 'search' => $this->request->query,
66
+
67
+ 'contain' => ['Assigns'],
68
+
69
+ 'conditions' => [
70
+
71
+ 'Jobs.date >=' => date("Y-m-d H:i:s", time()),
72
+
73
+ 'Jobs.disabled' => 0
74
+
75
+ ]
76
+
77
+ ]);
78
+
79
+
80
+
81
+ $jobs = [];
82
+
83
+ foreach ($query as $i => $job) {
84
+
85
+ // 募集 = 予約は除外
86
+
87
+ $num = $job->get_assign_num($job->id);
88
+
89
+ if ($job->num <= $num) continue;
90
+
91
+
92
+
93
+ // 自身が予約済みのjobは除外
94
+
95
+ $res = $this->Jobs->check_my_assign($job->id, $this->Auth->user('id'));
96
+
97
+ if (!$res) continue;
98
+
99
+
100
+
101
+ $jobs[$i] = $job;
102
+
103
+
104
+
105
+ }
106
+
107
+
108
+
109
+ $job_list = $this->paginate($query);
110
+
111
+ ```
112
+
113
+
114
+
115
+
116
+
51
117
 
52
118
 
53
119
  よろしくお願いいたします。