質問編集履歴

2

追加の質問に関しての情報追加

2019/12/12 00:52

投稿

kamille-mio
kamille-mio

スコア24

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

スペルミス修正

2019/12/12 00:52

投稿

kamille-mio
kamille-mio

スコア24

test CHANGED
File without changes
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
 
44
44
 
45
- 具体的には他のユーザーがその日の施設の予約を取る際に、別のユーザーがすでに同日・同施設に予約入れている場合、その時間帯を選択できないようにしたいので、取得してきた各予約情報の中から利用開始時間と利用終了時間を参照して、それを元に例えばflatpickrなら下記のminTimeやmaxTimeに設定する値を求めたいがその書き方がわからないといったといころです。
45
+ 具体的には他のユーザーがその日の施設の予約を取る際に、別のユーザーがすでに同日・同施設に予約入れている場合、その時間帯を選択できないようにしたいので、取得してきた各予約情報の中から利用開始時間と利用終了時間を参照して、それを元に例えばflatpickrなら下記のminTimeやmaxTimeに設定する値を求めたいがその書き方がわからないといったといころです。
46
46
 
47
47
 
48
48