簡體   English   中英

如何使用更新 function 更新我的事件表?

[英]How can I update my events table using update function?

我正在嘗試在 laravel 中更新我的事件表,但由於我對 php 和 laravel 還很陌生,所以我不知道該怎么做,我已經可以在數據庫中更新我的數據了。 另外我有一個錯誤“此集合實例上不存在屬性 [id]。)

我的刀片文件

<div class="table-responsive">
   <table id="default_order" class="table table-striped border display" style="width:100%">
      <thead>
          <tr>
            <th>Event Name</th>
            <th>Start Time</th>
            <th>End Time</th>
            <th>Status</th>
            <th>Manage</th>

          </tr>
      </thead>
          <tbody>
              @foreach ($event as $ev)
                 <tr>
                   <td>
                     {{$ev->event_name}}
                   </td>
                   <td>
                     {{$ev->event_start}}
                   </td>
                   <td>
                     {{$ev->event_finish}}
                   </td>

                   <td>
                     {{$ev->event_status}}
                   </td>

                   <td>
                     <button type="button" class="btn btn-info" data- 
                     toggle="modal" data-target="#eventModal{{$event->id}}" 
                     data-whatever="{{$event->id}}">  View</button>

                     <div class="modal fade" id="eventModal{{$event->id}}" 
                     tabindex="-1" role="dialog" aria- 
                     labelledby="eventModalLabel{{$event->id}}">

                     <div class="modal-dialog modal modal-dialog-centered" 
                     role="document">

                     <div class="modal-content">

                     <div class="modal-header">

                       <h4 class="modal-title" id="eventModalLabel{{$event- 
                       >id}}">Event Details:</h4>

                        <button type="button" class="close" data- 
                        dismiss="modal" aria-label="Close"><span aria- 
                        hidden="true">&times;</span></button>

                     </div>


                    <div class="modal-body">

                      <form method="POST" action="{{ route('event.update', 
                      $event->id) }}">

                      @method('PATCH')

                      @csrf

                      <div class="row">

                        <div class="col-md-5">

                            <div class="form-group">

                               <label for="event-name" class="control- 
                               label">Event Name:</label>

                               <input type="text" class="form-control" 
                               name="event_name" value="{{$event- 
                               >event_name}}">

                           </div>



                     </div>


                    <div class="col-md-5">

                       <div class="form-group">

                          <label for="event-start" class="control-label">Start 
                          Time:</label>

                             <input type="text" class="form-control" 
                             name="event_start" value="{{$event- 
                             >event_start}}">

                       </div>

                    </div>



                </div>


            <div class="row">

              <div class="col-md-5">

                <div class="form-group">

                   <label for="event-finish" class="control-label">End Time: 
                   </label>

                    <input type="email" class="form-control" 
                    name="event_finish" value="{{$event->event_finish}}">

               </div>

              </div>

            </div>


          </div>



     <div class="modal-footer">

        <button type="button" class="btn btn-default" data- 
        dismiss="modal">Close</button>

        <input type="submit" class="btn btn-success" value="Edit">

     </div>

    </form>

  </div>

 </div>
</div>
</td>
</tr>
@endforeach

我對這條特定線路有疑問

<button type="button" class="btn btn-info" data- 
                     toggle="modal" data-target="#eventModal{{$event->id}}" 
                     data-whatever="{{$event->id}}">  View</button>

因為它輸出錯誤“此集合實例上不存在屬性 [id]。)”

遷移表

public function up()
    {
        Schema::create('events', function (Blueprint $table) {
            $table->increments('id');
            $table->string('event_name');
            $table->string('event_desc')->nullable();

            //0 = Ongoing; 1 = Upcoming; 2 = Finished;
            $table->integer('event_status')->nullable();
            $table->dateTime('event_start');
            $table->dateTime('event_finish');

            $table->integer('evcat_id')->unsigned();
            $table->integer('user_id')->unsigned();
        });

        Schema::table('events', function($table) {
            $table->foreign('evcat_id')->references('id')->on('event_categories')->onDelete('cascade');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        });

    }



EventController 更新 function

public function update(Request $request, $id)
    {
        $validator = $request->validate([
            'event_name' => 'required',
            'event_start' => 'required',
            'event_finish' => 'required',

        ]);



        return redirect()->route('event.sched');
        /**
        $ev = event::find($id);

        $ev->event_name = $request->input("event_name");

        $ev->save();

        Session::flash('success', 'Event successfully updated.');



        return redirect()->route('event.sched');
        **/
    }

事件 Model

class Event extends Model
{

    //
    protected $primaryKey = 'id';

    public function eventCategory()
    {
        return $this->belongsTo('App\EventCategory', 'evcat_id');
    }
    public function user()
    {
        return $this->belongsTo('App\User', 'user_id');
    }
    protected $fillable = [
        'event_name', 'event_desc', 'event_status', 'event_start', 'event_finish', 'evcat_id', 'user_id',
    ];

    public $timestamps = false;

}

在您的foreach loop中,您將變量命名為$ev ,但在您提供的代碼段中,您引用了$event

<button type="button" class="btn btn-info" data- 
                 toggle="modal" data-target="#eventModal{{$ev->id}}" 
                 data-whatever="{{**$ev**->id}}">  View</button>

<input type="email" class="form-control" 
                name="event_finish" value="{{$ev->event_finish}}">

<input type="text" class="form-control" 
                             name="event_start" value="{{$ev- 
                             >event_start}}">

這應該可以解決您遇到的 id 錯誤。

至於更新方法(我不使用你的路線看起來像)它應該分配 model (使用路線 model 綁定)所以你可以這樣做:

public function update(Request $request, Event $event)
{
    $validator = $request->validate([
        'event_name' => 'required',
        'event_start' => 'required',
        'event_finish' => 'required',

    ]);
    $event->update($request->all());

    return redirect()->route('event.sched');
}

另請查看From request validation ,使用它,您可以對 create 和 update 方法使用相同的驗證器,而無需在 controller 方法中定義驗證器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM