내 Laravel5 앱에는 일대 다 (one to many) 서비스와 함께 제공되는 서비스 (이름, 설명, 시작, 종료) '일정 (하루, 시작, 종료).Laravel5 앱, 부모 및 '1 대 다수'하위 개체 저장 방법
Service.php :
class Service extends Model
{
//
protected $fillable = [
'name', 'description', 'begins', 'ends', 'service_schedules'
];
public function service_schedules()
{
return $this->hasMany('App\ServiceSchedule');
}
}
ServiceSchedule.php : I 서비스/스케줄 생성을위한 입력을 수집하기 위해 아래의 양식을 사용
class ServiceSchedule extends Model
{
//
protected $fillable = [
'day', 'begins', 'ends', 'service_id'
];
}
. vue2 코드를 사용하면 각 스케줄에 대한 필드 행을 추가/제거 할 수 있습니다.
form.blade.php :
<div id="app">
<div class="clearfix"></div>
<br/>
<div class="container">
<div class="col-md-12">
<div class="form-group row">
<label for="name" class="col-sm-2 col-form-label">Name<span style="color:red">*</span></label>
<div class="col-sm-6">
{!! Form::text('name', null, array('placeholder' => 'Name','class' => 'form-control')) !!}
</div>
</div>
<div class="form-group row">
<label for="description" class="col-sm-2 control-label">Description<span
style="color:red">*</span></label>
<div class="col-sm-6">
{!! Form::textarea('description', null, array('placeholder' => 'Description','class' => 'form-control')) !!}
</div>
</div>
<div class="form-group row">
<label for="begins" class="col-sm-2 control-label">From<span style="color:red">*</span></label>
<div class="col-sm-6">
{!! Form::date('begins', \Carbon\Carbon::now(), array('placeholder' => 'Begins','class' => 'form-control')) !!}
</div>
</div>
<div class="form-group row">
<label for="ends" class="col-sm-2 control-label">To<span style="color:red">*</span></label>
<div class="col-sm-6">
{!! Form::date('ends', \Carbon\Carbon::now()->addMonths(9), array('placeholder' => 'Ends','class' => 'form-control')) !!}
</div>
</div>
<div class="form-group row">
<label for="description" class="col-sm-2 control-label">Schedules<span
style="color:red">*</span></label>
<div class="col-sm-6">
<table class="table">
<thead>
<tr>
<th scope="col">Day</th>
<th scope="col">Start</th>
<th scope="col">Finish</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<tr v-for="(n, index) in rows" v-bind:id="index + 1">
<td>
<select class="form-control" v-model="n.day" v-bind:id="'service_schedules[' + index + '][day]'">
<option value="1">Monday</option>
<option value="2">Tuesday</option>
<option value="3">Wednesday</option>
<option value="4">Thursday</option>
<option value="5">Friday</option>
<option value="6">Saturday</option>
<option value="7">Sunday</option>
</select>
</td>
<td><input class="form-control" type="time" v-model="n.start" v-bind:id="'service_schedules[' + index + '][begins]'" /></td>
<td><input class="form-control" type="time" v-model="n.finish" v-bind:id="'service_schedules[' + index + '][ends]'" /></td>
<td>
<button type="button" name="add-schedule" id="add-schedule" class="btn btn-link"
v-on:click="addRow(index)"><i class="fa fa-plus fa-1x"></i></button>
<button type="button" name="remove-schedule" id="remove-schedule" class="btn btn-link"
v-on:click="removeRow(index)"><i class="fa fa-minus fa-1x"></i></button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
내 ServiceController 현재 성공적으로 저장 양식 입력을 기반으로 새 서비스. ServiceController.php 가기 :
public function store(Request $request)
{
request()->validate([
'name' => 'required|min:2',
'description' => 'required',
'begins' => 'required|date',
'ends' => 'required|date|after:start_date'
]);
Service::create($request->all());
return redirect()->route('services.index')
->with('success','Service created successfully');
}
내가 Laravel에 새로 온 사람으로
, 나는 나 또한 양식 입력을 기반으로 서비스와 관련된 새로운 일정을 저장하기 위해이 코드를 수정해야합니다 방법을 모르겠어요. 누군가 조언 해 줄 수 있습니까? 또는 다른 사람이 가이드로 사용할 수있는 유사한 예를 참조 할 수 있습니까?
감사합니다. 일정을 저장하는 방법에 대해서는 아직 분명하지 않습니다. 1. Laravel이 저장을 위해 Schedule 개체를 채우는 데 적합한 일정 필드의 ID가 양식에 있습니까? 2. 내 코드에서 $ service 개체가 없으며 Service :: create 만 사용하므로 생성 된 서비스에 연결된 일정을 어떻게 저장합니까? – Christos
Laravel 모델을 사용할 때 ID에 신경 쓸 필요가 없습니다. 위의 코드는 필요한 모든 ID를 생성합니다. – Michael