如何检查NULL并将外键传递给数据库?

时间:2019-04-29 01:41:55

标签: php laravel laravel-5 eloquent

我正在创建一个模仿简单酒店预订系统同时还链接到数据库的Web应用程序。我已经设置了表格并设置了正确的主/外键。在执行dd以确保我收集到数据时,id一直显示为空,这是我无法拥有的。

我确实在预订表中设置了一个外键,以确保在使用它们时都将它们链接在一起,因为customers.create表单和reservations.create表单可以在不同的表中使用。我已经尝试使用输入类型,但是仍然出现错误。我度过了美好的一天,寻找可以做什么,但是我还没有发现任何可行的方法。

我的ReservationsController中的商店功能

    public function store(Request $request)
     {
         $data =[
           $request->customer_id,
           $request->room_no,
           $request->start_date,
           $request->end_date,
           $request->category,
         ];
       dd($data);
     }

我的预订表

    public function up()
        {
        Schema::create('reservations', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('room_no')->unsigned();
            $table->foreign('room_no')->references('room_no')->on('rooms');
            $table->date('start_date');
            $table->date('end_date');
            $table->decimal('amount')->default(0.0);
            $table->bigInteger('customer_id')->unsigned();
            $table->foreign('customer_id')->references('id')->on('customers');
            $table->string('category');
            $table->timestamps();
        });

我的Reservations.create.blade表单

      <form method="POST" action="/reservations/">
        @csrf

        <div>
          <p>
               <b>Enter Reservation for {{$customer->first_name}} {{$customer->last_name}}</b>
           </p>
           <h4 class="info-text">Select Room<br>
            <select name="room_no" id="room_no">
                <option value=100>100</option>
             //...there are more but no need to post ALL of them here
              </select>
           </h4>
            <h4 class="info-text">Select Room Type<br>
             <select name="category" id="category">
               <option value="Deluxe">Deluxe</option>
               // shortened for question's sake again
            </h4>
            <p>
        <b>Enter Start and End Date:</b>
           </p>
           <table>
               <tr>
                   <td>
                     <input class="input" type="date" name="start_date" size="11" />
                     <input class="input" type="date" name="end_date" size="11" />
                   </td>
               </tr>
           </table>
           <b>Cost of Stay</b>
           <td>
             <input class="input" type="decimal" name="amount" size="11"/>
           </td>
        <p><button type="submit">Create Reservation</button></p>
    </div>
  </form>

我可以将自己的观点与路线关联起来

    Route::resource('reservations', 'ReservationsController');
    Route::get('/reservations/create/{customer_id}', 
     "ReservationsController@create_reservation");

当我在控制器中dd时,我应该获取所有数据,包括customer_id,但是当我运行应用程序时,我将获得除customer_id以外的所有输入,在这种情况下,该值在数组中为0。

array:5 [▼
  0 => null
  1 => "106"
  2 => "2019-04-16"
  3 => "2019-04-30"
  4 => "Economy"
]

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的表单操作应类似于:

action="{{ '/reservations/' . $customer->id}}"

您需要在您的create_reservation函数中获取它,例如:

public function create_reservasion(Request $request, $customer_id)
{
    ...
}