I got problem with edit events. No query results for model [App\HomeModel] {id} I really dont know how to fix my problem. I trying change findorfail to find but still got some problems. I change findorfail to HomeModel::where('id', $id)->first(); and still i got error: Creating default object from empty value
Controller with edit and update function:
<?php
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$event = HomeModel::findOrFail($id);
$event->start;
$event->end;
$data = [
'page_title' => 'Edit '.$event->title,
'event' => $event,
];
return view('edit',$data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$time = explode(" - ", $request->input('daterange'));
$event = HomeModel::findOrFail($id);
$event->name = $request->input('name');
$event->title = $request->input('title');
$event->start = $time[0];
$event->end = $time[1];
$event->save();
return redirect('/home/list');
}
Model:
namespace App;
use Illuminate\Database\Eloquent\Model;
class HomeModel extends Model
{
protected $table = 'events';
public $timestamps = true;
protected $primaryKey = 'id';
/**
* Is it an all day event?
*
* @return bool
*/
public function isAllDay()
{
return (bool)$this->day;
}
}
Edit view:
@extends('layouts.app')
@section('content')
<div class="panel-heading">
<div class="col-md-6 col-md-offset-4">Edit Event</div>
</div>
<div class="panel-body">
<form class="form-horizontal" role="form" method="POST" action="{{ url('/list/edit/{id}') }}">
{{ csrf_field() }}
<div class="form-group">
<label for="name" class="col-md-4 control-label">Name Event</label>
<div class="col-md-6">
<input id="name" type="text" class="form-control" name="name">
</div>
<label for="title" class="col-md-4 control-label">Title Event</label>
<div class="col-md-6">
<input id="title" type="text" class="form-control" name="title">
</div>
<div class="col-md-4 col-md-offset-4">
<input type="text" name="daterange"/>
</div>
<div class="col-md-5 col-md-offset-4">
<button type="submit" class="btn btn-primary">
Edit Event
</button>
</div>
</div>
</form>
<script src="{{ asset('js/jquery.js') }}"></script>
<script src="{{ asset('js/moment.js') }}"></script>
<script src="{{ asset('js/daterangepicker.js') }}"></script>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<script type="text/javascript">
$(function() {
$('input[name="daterange"]').daterangepicker({
timePicker: true,
timePicker24Hour: true,
slotLabelFormat: 'HH:mm:ss',
locale: {
format: 'YYYY/MM/DD HH:mm:ss',
separator: " - ",
}
});
});
</script>
</div>
</div>
</div>
@endsection
</div>