|
|
@@ -128,8 +128,8 @@ class NewsController extends Controller
|
|
128
|
128
|
public function detail(Request $request, $locale = 'tw', $id){
|
|
129
|
129
|
|
|
130
|
130
|
$isPreview = $request->input("preview","");
|
|
131
|
|
- $now = now();
|
|
132
|
|
-
|
|
|
131
|
+ $now = Carbon::now();
|
|
|
132
|
+
|
|
133
|
133
|
if($isPreview){
|
|
134
|
134
|
$news = News::where('id', $id)
|
|
135
|
135
|
->first();
|
|
|
@@ -156,34 +156,53 @@ class NewsController extends Controller
|
|
156
|
156
|
}
|
|
157
|
157
|
// dd($news);
|
|
158
|
158
|
//取得前一篇
|
|
159
|
|
- $previous = News::where(function ($query) use ($news) {
|
|
|
159
|
+ $previous = News::where(function ($query) use ($news, $now) {
|
|
160
|
160
|
$query->where('order', $news->order)
|
|
161
|
161
|
->where('post_date', $news->post_date)
|
|
162
|
|
- ->where('id', '>', $news->id);
|
|
|
162
|
+ ->where('id', '>', $news->id)
|
|
|
163
|
+ ->where("visible", 1)
|
|
|
164
|
+ ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
|
|
|
165
|
+ ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
|
|
163
|
166
|
})
|
|
164
|
|
- ->orWhere(function ($query) use ($news) {
|
|
|
167
|
+ ->orWhere(function ($query) use ($news, $now) {
|
|
165
|
168
|
$query->where('order', $news->order)
|
|
166
|
|
- ->where('post_date', '>', $news->post_date);
|
|
|
169
|
+ ->where('post_date', '>', $news->post_date)
|
|
|
170
|
+ ->where("visible", 1)
|
|
|
171
|
+ ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
|
|
|
172
|
+ ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
|
|
167
|
173
|
})
|
|
168
|
|
- ->orWhere(function ($query) use ($news) {
|
|
169
|
|
- $query->where('order', '>', $news->order);
|
|
|
174
|
+ ->orWhere(function ($query) use ($news, $now) {
|
|
|
175
|
+ $query->where('order', '>', $news->order)
|
|
|
176
|
+ ->where("visible", 1)
|
|
|
177
|
+ ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
|
|
|
178
|
+ ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
|
|
170
|
179
|
})
|
|
171
|
180
|
->orderBy('order', 'asc')
|
|
172
|
181
|
->orderBy('post_date', 'asc')
|
|
173
|
182
|
->orderBy('id', 'asc')
|
|
174
|
183
|
->first();
|
|
|
184
|
+
|
|
175
|
185
|
//取得下一篇
|
|
176
|
|
- $next = News::where(function ($query) use ($news) {
|
|
|
186
|
+ $next = News::where(function ($query) use ($news, $now) {
|
|
177
|
187
|
$query->where('order', $news->order)
|
|
178
|
188
|
->where('post_date', $news->post_date)
|
|
179
|
|
- ->where('id', '<', $news->id);
|
|
|
189
|
+ ->where('id', '<', $news->id)
|
|
|
190
|
+ ->where("visible", 1)
|
|
|
191
|
+ ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
|
|
|
192
|
+ ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
|
|
180
|
193
|
})
|
|
181
|
|
- ->orWhere(function ($query) use ($news) {
|
|
|
194
|
+ ->orWhere(function ($query) use ($news, $now) {
|
|
182
|
195
|
$query->where('order', $news->order)
|
|
183
|
|
- ->where('post_date', '<', $news->post_date);
|
|
|
196
|
+ ->where('post_date', '<', $news->post_date)
|
|
|
197
|
+ ->where("visible", 1)
|
|
|
198
|
+ ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
|
|
|
199
|
+ ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
|
|
184
|
200
|
})
|
|
185
|
|
- ->orWhere(function ($query) use ($news) {
|
|
186
|
|
- $query->where('order', '<', $news->order);
|
|
|
201
|
+ ->orWhere(function ($query) use ($news, $now) {
|
|
|
202
|
+ $query->where('order', '<', $news->order)
|
|
|
203
|
+ ->where("visible", 1)
|
|
|
204
|
+ ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
|
|
|
205
|
+ ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
|
|
187
|
206
|
})
|
|
188
|
207
|
->orderBy('order', 'desc')
|
|
189
|
208
|
->orderBy('post_date', 'desc')
|