質問編集履歴
2
追加の質問に関しての情報追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -393,3 +393,283 @@
|
|
393
393
|
指定された日付の予約情報をすべて取得する関数のテスト
|
394
394
|
|
395
395
|
![イメージ説明](cde7457b3568e535c50de245517684e8.png)
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
#### 追記
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
view
|
404
|
+
|
405
|
+
|
406
|
+
|
407
|
+
```HTML
|
408
|
+
|
409
|
+
<body>
|
410
|
+
|
411
|
+
<div id="app">
|
412
|
+
|
413
|
+
<div clas="container">
|
414
|
+
|
415
|
+
<div class="row justify-content-center">
|
416
|
+
|
417
|
+
<div class="col-md-8">
|
418
|
+
|
419
|
+
<div class="card">
|
420
|
+
|
421
|
+
<div class='card-hearder'>{{ __('get-reservation' )}}</div>
|
422
|
+
|
423
|
+
|
424
|
+
|
425
|
+
<div class="card-body">
|
426
|
+
|
427
|
+
<form method="GET" action="javascript:void(0);" id="test">
|
428
|
+
|
429
|
+
<div class="form-group row">
|
430
|
+
|
431
|
+
<label for="facility_name" class="col-md-4 col-form-label text-md-right">{{ __('facility_name' )}}</label>
|
432
|
+
|
433
|
+
|
434
|
+
|
435
|
+
<div class="col-md-6">
|
436
|
+
|
437
|
+
<select class="form-control" id="facility_name" name="facility_name">
|
438
|
+
|
439
|
+
<option value="blank" selected="selected">選択してください</option>
|
440
|
+
|
441
|
+
<option value="test1">test1</option>
|
442
|
+
|
443
|
+
<option value="test2">test2</option>
|
444
|
+
|
445
|
+
<option value="test3">test4</option>
|
446
|
+
|
447
|
+
</select>
|
448
|
+
|
449
|
+
|
450
|
+
|
451
|
+
</div>
|
452
|
+
|
453
|
+
</div>
|
454
|
+
|
455
|
+
|
456
|
+
|
457
|
+
<div class="form-group row">
|
458
|
+
|
459
|
+
<label for="dates" class="col-md-4 col-form-label text-md-right">{{ __('dates' )}}</label>
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
<div class="col-md-6">
|
464
|
+
|
465
|
+
<input type="text" class="form-control dateinfo" placeholder="Select Date.." id="dateinfo" name="dateinfo" readonly="readonly">
|
466
|
+
|
467
|
+
|
468
|
+
|
469
|
+
</div>
|
470
|
+
|
471
|
+
</div>
|
472
|
+
|
473
|
+
|
474
|
+
|
475
|
+
<div class="form-group row">
|
476
|
+
|
477
|
+
<div class="col-md-8 offset-md-4">
|
478
|
+
|
479
|
+
<button type="submit" class="btn btn-primary" id="date-select">
|
480
|
+
|
481
|
+
{{ __('submit') }}
|
482
|
+
|
483
|
+
</button>
|
484
|
+
|
485
|
+
|
486
|
+
|
487
|
+
</div>
|
488
|
+
|
489
|
+
</div>
|
490
|
+
|
491
|
+
</form>
|
492
|
+
|
493
|
+
</div>
|
494
|
+
|
495
|
+
</div>
|
496
|
+
|
497
|
+
</div>
|
498
|
+
|
499
|
+
</div>
|
500
|
+
|
501
|
+
</div>
|
502
|
+
|
503
|
+
</div>
|
504
|
+
|
505
|
+
|
506
|
+
|
507
|
+
<script>
|
508
|
+
|
509
|
+
$(function () {
|
510
|
+
|
511
|
+
|
512
|
+
|
513
|
+
$(document).on("click", "#date-select", function() {
|
514
|
+
|
515
|
+
init_set_reservations();
|
516
|
+
|
517
|
+
});
|
518
|
+
|
519
|
+
|
520
|
+
|
521
|
+
// 1で発火したajaxでデータベースにアクセスして、テーブルから取得した日付の予約情報を取り出す。
|
522
|
+
|
523
|
+
|
524
|
+
|
525
|
+
function init_set_reservations () {
|
526
|
+
|
527
|
+
|
528
|
+
|
529
|
+
const server_url = "http://localhost:8000/"; // 使用しているサーバーのURLを定義
|
530
|
+
|
531
|
+
|
532
|
+
|
533
|
+
|
534
|
+
|
535
|
+
// フォームで送信されるデータの確認
|
536
|
+
|
537
|
+
var formData = $('#test').serialize();
|
538
|
+
|
539
|
+
console.log(formData);
|
540
|
+
|
541
|
+
|
542
|
+
|
543
|
+
// Ajax。今回は非同期で行いたい。
|
544
|
+
|
545
|
+
|
546
|
+
|
547
|
+
$.ajax({
|
548
|
+
|
549
|
+
type:'GET',
|
550
|
+
|
551
|
+
url: server_url + "/get-reserve",
|
552
|
+
|
553
|
+
datatype:'json',
|
554
|
+
|
555
|
+
data:{
|
556
|
+
|
557
|
+
dateinfo:$('#dateinfo').val(), // 日付選択のためのinputタグからの情報
|
558
|
+
|
559
|
+
facility_name:$('#facility_name').val() // 施設名選択のためのinputタグからの情報
|
560
|
+
|
561
|
+
|
562
|
+
|
563
|
+
}
|
564
|
+
|
565
|
+
|
566
|
+
|
567
|
+
}).done(function(data) {
|
568
|
+
|
569
|
+
console.log(data);
|
570
|
+
|
571
|
+
});
|
572
|
+
|
573
|
+
}
|
574
|
+
|
575
|
+
flatpickr(".dateinfo");
|
576
|
+
|
577
|
+
|
578
|
+
|
579
|
+
|
580
|
+
|
581
|
+
|
582
|
+
|
583
|
+
</script>
|
584
|
+
|
585
|
+
</body>
|
586
|
+
|
587
|
+
</html>
|
588
|
+
|
589
|
+
```
|
590
|
+
|
591
|
+
|
592
|
+
|
593
|
+
ルーティング
|
594
|
+
|
595
|
+
```php
|
596
|
+
|
597
|
+
Route::get('get-reserve', 'ReserveController@test');
|
598
|
+
|
599
|
+
```
|
600
|
+
|
601
|
+
|
602
|
+
|
603
|
+
モデム側のメソッド
|
604
|
+
|
605
|
+
```php
|
606
|
+
|
607
|
+
static function SearchReserveDates() {
|
608
|
+
|
609
|
+
|
610
|
+
|
611
|
+
$reserveinfo = \App\Reserve::whereHas('Facility', function($query){
|
612
|
+
|
613
|
+
$query->where('facility_name', "{$facility_name}")->whereDate('start_time', "{$reservedates}")->whereDate('end_time', "{$reservedates}");
|
614
|
+
|
615
|
+
})->select('id', 'start_time', 'end_time')->get()->all();
|
616
|
+
|
617
|
+
```
|
618
|
+
|
619
|
+
コントローラー
|
620
|
+
|
621
|
+
```php
|
622
|
+
|
623
|
+
public function test(){
|
624
|
+
|
625
|
+
if(isset($_GET['dateinfo']) && isset($_GET['facility_name'])) {
|
626
|
+
|
627
|
+
|
628
|
+
|
629
|
+
$reservedates = $_GET['dateinfo'];
|
630
|
+
|
631
|
+
$facility_name = $_GET['facility_name'];
|
632
|
+
|
633
|
+
|
634
|
+
|
635
|
+
$reserveinfo = Reserve::SearchReserveDates();// モデムのメソッドをそのまま書いたものでも同様の結果になる
|
636
|
+
|
637
|
+
|
638
|
+
|
639
|
+
\Debugbar::info($reserveinfo);
|
640
|
+
|
641
|
+
|
642
|
+
|
643
|
+
$json = json_encode($reserveinfo, JSON_PRETTY_PRINT);
|
644
|
+
|
645
|
+
|
646
|
+
|
647
|
+
} else {
|
648
|
+
|
649
|
+
dd($reservedates);
|
650
|
+
|
651
|
+
dd($facility_name);
|
652
|
+
|
653
|
+
}
|
654
|
+
|
655
|
+
}
|
656
|
+
|
657
|
+
```
|
658
|
+
|
659
|
+
|
660
|
+
|
661
|
+
console.log(formData)
|
662
|
+
|
663
|
+
![イメージ説明](6333ac4e5dcc461211dbc992add83b83.png)
|
664
|
+
|
665
|
+
|
666
|
+
|
667
|
+
PHP側の処理の結果
|
668
|
+
|
669
|
+
![イメージ説明](17ffffdaeb0e2f070242a906eb510366.png)
|
670
|
+
|
671
|
+
|
672
|
+
|
673
|
+
Debugberで確認した実行されているSQL
|
674
|
+
|
675
|
+
![イメージ説明](7dca3f66f670744b24a1c8b96b516790.png)
|
1
スペルミス修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
-
具体的には他のユーザーがその日の施設の予約を取る際に、別のユーザーがすでに同日・同施設に予約
|
45
|
+
具体的には他のユーザーがその日の施設の予約を取る際に、別のユーザーがすでに同日・同施設に予約を入れている場合、その時間帯を選択できないようにしたいので、取得してきた各予約情報の中から利用開始時間と利用終了時間を参照して、それを元に例えばflatpickrなら下記のminTimeやmaxTimeに設定する値を求めたいがその書き方がわからないといったといころです。
|
46
46
|
|
47
47
|
|
48
48
|
|