Как проверить несколько столбцов? - PullRequest
1 голос
/ 15 апреля 2019

Мне нужно проверить, равен ли schedules_id запросу schedules_id, затем нужно проверить profile 'забронировано' или 'в ожидании', а затем нужно передать все 'забронированные' значения profile seat в блейд. PHP. Как я могу это сделать или если другой способ или логика сделать это, пожалуйста, предложите мне, я новичок в Laravel

как я получаю данные сейчас:

class PassengersController extends Controller
{
    public function booking(Request $request)
    {
        //river is used to pass important params with flow of it from page to page
        $seat         = $request->seat;
        $buses_id     = $request->buses_id;
        $schedules_id = $request->schedules_id;
        $data         = Buses::where('buses_id', $buses_id)->first();
        $seat         = json_decode($data->seat_layout, true);
        $front        = json_decode($data->front_layout, true);
        $bookingSeat  = Bookings::whereColumn('schedules_id', 'schedules_id')->get();

        $bookingSeat = $bookingSeat->map(function ($bookSeat) {
            $bookSeat->seat = explode(",", $bookSeat->seat);
            return $bookSeat;
        });

        return view('frontend.booking', ['seat' => $seat, 'buses_id' => $buses_id, 'schedules_id' => $schedules_id, 'front' => $front, 'bookingSeet' => $bookingSeat]);

    }
}

blade.php

<div class="bus">
@foreach($seat as $key => $item)
@foreach($bookingSeet as $seer)
   <div class="col-md-1">
   <div class="seats back seats 
   @if(in_array($item['name'], $seer['seat']))
   activeSeat
   @endif"
   data-id="{{$key}}">
   <div class="special-attributes"></div>
   @if(isset($item['name'])){{$item['name']}}@else 11A @endif

   <input type="checkbox" name="seat_id[]" id="{{$key}}" value="{{$key}}">

   </div>
   </div>
@endforeach
@endforeach
</div>

таблица

bookings_id users_id schedules_id buses_id routes_id seat price profile
    1           1         6           1       3        1  Null  pending
    2           1         6           1       3        2  Null  booked
    3           1         6           1       3        3  null  booked

Проблема с моим текущим кодом заключается в получении массива 2 со столбцом таблицы всех заказов, как передать это значение в blade-сервер, когда я пытаюсь получить дублированный флажок для ex. один автобус имеет 50 мест, но теперь показывает 100 мест. места как 1,1,2,2 в поле зрения

Один массив выглядит так:

Collection {#426 ▼
  #items: array:2 [▼
    0 => Bookings {#431 ▼
      #fillable: array:7 [▶]
      #primaryKey: "bookings_id"
      #connection: "mysql"
      #table: null
      #keyType: "int"
      +incrementing: true
      #with: []
      #withCount: []
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #attributes: array:10 [▼
        "bookings_id" => 1
        "users_id" => 1
        "schedules_id" => 6
        "buses_id" => 1
        "routes_id" => 3
        "seat" => "1"
        "price" => null
        "profile" => "pending"
        "created_at" => "2019-04-09 00:00:00"
        "updated_at" => "2019-04-09 00:00:00"
      ]
      #original: array:10 [▶]
      #changes: []
      #casts: []
      #dates: []
      #dateFormat: null
      #appends: []
      #dispatchesEvents: []
      #observables: []
      #relations: []
      #touches: []
      +timestamps: true
      #hidden: []
      #visible: []
      #guarded: array:1 [▶]
    }
    1 => Bookings {#432 ▶}
  ]
} 

Ответы [ 3 ]

0 голосов
/ 15 апреля 2019

попробуйте

Bookings::where('schedules_id', $schedules_id)->where('profile', 'booked')->get();
0 голосов
/ 15 апреля 2019

Вам разрешено использовать массивы и другие.

Например:

$model->where([
      ['field-one', '=', 'valueOne'],
      ['field-two', '=', 'valueY']
]);
0 голосов
/ 15 апреля 2019

Попробуйте это:

$bookingSeat  = Bookings::where('schedules_id', $request->schedules_id)->where(function ($q) {
    $q->where('profile', 'booked')->orWhere('profile', 'pending');
})->get();

или это:

$profileTypes = ['booked', 'pending'];
$bookingSeat  = Bookings::where('schedules_id', $request->schedules_id)->whereIn('profile', $profileTypes)->get();

@ Редактировать

Таким образом, если ваша таблица «Бронирование» содержит все уже зарегистрированные места (от 1 до 50), она вернет все места, которые ваш профиль «забронировал» или «ожидает» для определенного автобуса, маршрута и времени.

$profileTypes = ['booked', 'pending'];
$bookingSeat  = Bookings::where('schedules_id', $request->schedules_id)
    ->whereIn('profile', $profileTypes)
    ->where('buses_id', $buses_id)
    ->where('routes_id', $request->route_id)
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...