#laravel #controller
#laravel #контроллер
Вопрос:
У меня есть 3 таблицы.
- рабочий стол
- посещаемость таблицы
- таблица attendance_worker
в attendance_worker
выглядит так
id | worker_id | attendance_id | info
1 2 1 present
2 3 1 present
3 2 2 present
4 3 2 absent
я хочу удалить worker_id=3
с помощью attendance_id=1
что я должен сделать в своем контроллере, чтобы отсоединить эту единственную строку? Я действительно плохо разбираюсь в логике, я новичок здесь, чтобы изучать личиночный
Это мой контроллер
public function deleteattendance($id)
{
$data= Attendance::find($id);
$data->Worker()->detach();
return redirect('attendance/detail/'.$id);
}
это скриншот для моего блейда
Комментарии:
1. Эй, я думаю, что главное, чего вам здесь не хватает, это второй идентификатор, который вам нужен для идентификации правильной записи. Ваше отсоединение должно выглядеть примерно так
$data->Worker()->detach(3);
( laravel.com/docs/8.x/eloquent-relationships#attaching-detaching )2. да, я знаю, что если я добавлю
->dettach(3)
, это будет удаление данных worker_id= 3 с attendance_id= 1. но в моем случае я хочу сделать это с помощью кнопки delete. я действительно плохо делаю переменную, кстати, спасибо за ответ.3. вы должны отправить
worker_id
на свой контроллер, а затем вызвать$data->Worker()->detach($worker_id);
4. Итак, чтобы быть уверенным, что я вас правильно понял: вы знаете, что добавление
3
будет работать, но вы не знаете, откуда вы должны получить значение3
(так как ни одна переменная его не содержит)?5. То, что говорит @Babak, верно. Вы можете отправлять данные через get / post или даже включать их в маршрут
Route::delete('worker/{worked_id}/attendance/{attendance_id}', 'Yourcontroller@somefunction')
таким образом, у$request
вас всегда будет доступ как к worker, так и к attendance_id
Ответ №1:
Ваша форма :
<table class="table table-hover table-in-card">
<thead>
<tr>
<th scope="col">No</th>
<th scope="col">Name</th>
<th scope="col">Info</th>
<th scope="col" class="">Action</th>
</tr>
</thead>
<tbody>
@foreach($attendance->worker as $key->$worker)
<tr>
<th scope="row">{{ $key 1 }}</th>
<td>{{$worker->name}}</td>
<td>{{$worker->pivot->info}}</td>
<td>
<form method="post" action="{{route('worker.delAttend',['worker'=>$worker->id,'attend'=>$attend->id])}}">
@method('DELETE')
@csrf
<button class="btn btn-warning btn btn-danger btn-sm" type="submit"><i class="fas fa-trash-alt"></i></button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
Ваш маршрут :
Route::delete('/d/{worker}/{attend}',[Controller::class,'deleteattendance'])->name('worker.delAttend');
Ваш контроллер :
public function deleteattendance(WorkerModel $worker, AttendModel $attend){
$attend->Worker()->detach($worker['id']);
return redirect('attendance/detail/'.$id);
}
Дайте мне знать, если возникнут какие-либо проблемы!
Комментарии:
1. я получаю сообщение об ошибке, прежде чем получу удаление формы. ! изображение мне нравится ваше предложение
2. это не о моем коде. Речь идет о вашем маршруте посещаемости / сведений / идентификатора! В вашем маршруте перенаправления такого идентификатора нет. @user14521540
3. сэр, это все еще не работает, сэр .. я не знаю, как это решить, помогите мне
4. Сэр, я немного обновил свой ответ в соответствии с вашей формой. проверьте это, пожалуйста. и о вашей проблеме, просто скажите мне о своей ошибке. Если у вас все еще есть последняя ошибка, дайте мне свои маршруты. позвольте мне увидеть ваши маршруты. Я даже не знаю, в чем именно ваша ошибка. мой идентификатор телеграммы — sn_tel . Если вы хотите подключить меня, просто напишите мне о своей проблеме там. Я сделаю все возможное, чтобы ответить вам.
5. сэр, я все еще пытаюсь выполнить ваше предложение, но все равно ошибка, я пытаюсь связаться с вами в вашей телеграмме, но моя учетная запись accout Telegram не использовалась долгое время, для восстановления учетной записи требуется 2×24 часа, может быть, у вас есть что-то вроде telegram, например, Discord, или что-то в этом роде, кстатиэто моя телеграмма @mj_jule (meglo_jule)
Ответ №2:
</div>
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
Add Attendace Worker
</button>
<div class="row clearfix">
<div class="card-body ">
<table class="table table-hover table-in-card">
<thead>
<tr>
<th scope="col">No</th>
<th scope="col">Name</th>
<th scope="col">Info</th>
<th scope="col" class="">Action</th>
</tr>
</thead>
<tbody>
<?php $i=1;?>
@foreach($attendance->worker as $key->$worker)
<tr>
<th scope="row">{{ $i }}</th>
<td>{{$worker->name}}</td>
<td>{{$worker->pivot->info}}</td>
<td>
<form method="post" action="{{route('worker.delAttend',['worker'=>$worker->id,'attend'=>$attend->id])}}">
@method('DELETE')
@csrf
<button class="btn btn-danger btn-xs" type="submit"><i class="fa fa-remove"></i></button>
</form>
</td>
</tr>
<?php $i ;?>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
<label> Present : {{$attendance_worker_present}}</label><br>
<label> Absent : {{$attendance_worker_absent}}</label>
</div>
</div>
вся посещаемость моего маршрута
Route::get('/attendance', 'AttendancesController@index')->name('attendance');
Route::get('/attendance/create', 'AttendancesController@create');
Route::post('/attendance/store', 'AttendancesController@store');
Route::get('/attendance/{attendance}/show', 'AttendancesController@show');
Route::post('/attendance/{attendance}/adddate', 'AttendancesController@adddate');
Route::delete('/{worker}/{attend}',[Attendance::class,'deleteattendance'])->name('worker.delAttend');
мой контроллер
public function deleteattendance(WorkerModel $worker, AttendModel $attend){
$attend->Worker()->detach($worker['id']);
return redirect('attendance/detail/'.$id);
}