Я использую Laravel -5,8 для веб-приложения. В проекте я использую поля ввода формы Dynami c, как показано ниже:
У меня есть две таблицы: projects и project_details
У меня есть два класса моделей
Project ( проекты)
protected $fillable = [
'project_type',
'project_title',
'start_date',
'end_date',
];
ProjectDetail (project_details)
protected $fillable = [
'project_id',
'description',
'activity',
];
У проекта есть start_date и end_date, в то время как ProjectDetail имеет activity_start_date и activity_end_date.
Контроллер
public function create()
{
return view('appraisal.appraisal_goals.create');
}
public function store(StoreProjectRequest $request)
{
$activityStartDate = Carbon::parse($request->activity_start_date);
$activityEndDate = Carbon::parse($request->activity_end_date);
try {
$project = new Project();
$project->project_type = $request->project_type;
$project->project_title = $project_title;
$project->employee_id = $request->employee_id;
$project->weighted_score = $request->weighted_score;
$project->goal_description = $request->goal_description;
$project->start_date = ;
$project->end_date = ;
$project->save();
foreach ( $request->activity as $key => $activity){
$projectdetail = new ProjectDetail();
$projectdetail->description = $request->description[$key];
$projectdetail->activity = $request->activity[$key];
$projectdetail->activity_start_date = $activityStartDate[$key];
$projectdetail->activity_end_date = $activityEndDate[$key];
$projectdetail->project_id = $goal->id;
$projectdetail->save();
}
Session::flash('success', 'Project is created successfully');
return redirect()->route('projects.index');
} catch (Exception $exception) {
Session::flash('danger', 'Project creation failed!');
return redirect()->route('projects.index');
}
}
просмотр
<div class="row">
<div class="col-md-12">
<!-- general form elements -->
<form method="POST" action="{{route('projects.store')}}">
@csrf
<div class="card-body">
<div class="form-body">
<div class="row">
<div class="col-12 col-sm-6">
<div class="form-group">
<label class="control-label"> Project Type:<span style="color:red;">*</span></label>
<input type="text" name="project_type" class="form-control">
</div>
</div>
<div class="col-12 col-sm-6">
<div class="form-group">
<label class="control-label"> Project Title:<span style="color:red;">*</span></label>
<input type="text" name="project_title" class="form-control">
</div>
</div>
<div class="col-sm-12">
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">Activity<span style="color:red;">*</span></th>
<th scope="col">Description<span style="color:red;">*</span></th>
<th scope="col">Activity Start Date</th>
<th scope="col">Activity End Date</th>
<th scope="col"><a class="addRow"><i class="fa fa-plus"></i></a></th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" name="activity[]" class="form-control activity" ></td>
<td><input type="text" name="description[]" class="form-control description" ></td>
<td><input type="date" name="activity_start_date[]" class="form-control activity_start_date" ></td>
<td><input type="date" name="activity_end_date[]" class="form-control activity_end_date" ></td>
<td><a class="btn btn-danger remove"> <i class="fa fa-times"></i></a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary">Save</button>
<button type="button" onclick="window.location.href='{{route('project.index')}}'" class="btn btn-default">Cancel</button>
</div>
</form>
</div>
<!-- /.card -->
javascript
<script type="text/javascript">
$(document).ready(function(){
$('.addRow').on('click', function () {
var numRows = $('.activity').length
function addRow() {
var addRow = '<tr>\n' +
' <td><input type="text" name="activity[]" class="form-control activity" ></td>\n' +
' <td><input type="text" name="description[]" class="form-control description" ></td>\n' +
' <td><input type="date" name="activity_start_date[]" class="form-control activity_start_date" ></td>\n' +
' <td><input type="date" name="activity_end_date[]" class="form-control activity_end_date" ></td>\n' +
' <td><a class="btn btn-danger remove"> <i class="fa fa-times"></i></a></td>\n' +
' </tr>';
$('tbody').append(addRow);
addRemoveListener();
};
addRemoveListener();
});
function addRemoveListener() {
$('.remove').on('click', function () {
var l =$('tbody tr').length;
if(l==1){
alert('you cant delete last one')
}else{
$(this).parent().parent().remove();
}
});
}
Когда форма будет отправлена, я хочу, чтобы приложение:
получило минимум всех Activity_start_date в ProjectDetail и установите значение start_date в Project и сохраните в таблице проектов (обновите таблицу проектов).
получите максимум всех activity_end_date в ProjectDetail и установите для него значение end_date в Project и сохраните в таблице проектов (обновите таблицу проектов).
Как мне этого добиться?
Спасибо