я хочу использовать отдельную строку, с этим случаем

#laravel #controller

#laravel #контроллер

Вопрос:

У меня есть 3 таблицы.

  1. рабочий стол
  2. посещаемость таблицы
  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);
    }