Почему моя модель не удаляется, даже если я передал ее контроллеру? - PullRequest
0 голосов
/ 14 марта 2020

У меня есть кнопка, чтобы удалить запись определенной таблицы. Контроллер является вложенным контроллером. Требуется переменная building и buildingWork.

Когда я выкидываю переменные в моем представлении, я получаю истинную модель и все остальное. Однако, когда я сбрасываю данные в моем контроллере, он возвращает пустой объект. Я не понимаю, почему он это делает ...

Вот мой код:

Контроллер

    public function destroy(Building $building, BuildingWork $buildingWork)
    {
        dump($buildingWork);
        $buildingWork->delete();
        // return redirect()->route('buildings.apartments.index', $building);
    }

Вид

@foreach($building->buildingWorks->sortByDesc('urgent') as $buildingWork)
        <tr class="table-{{$buildingWork->getColoring()}}">
            <td>{{$buildingWork->description}}</td>
            <td align="right">
                <a type="button" class="btn btn-success" href="">Marquer comme "fait"</a>
                <form class="d-inline-block" method="post" action="{{route('buildings.buildingworks.destroy', [$building, $buildingWork])}}">
                    @method('DELETE')
                    @csrf
                    <input type="submit" class="btn btn-danger" value="Annuler" />
                </form>            
            </td>
        </tr>
        @endforeach

Поэтому, когда я нажимаю на кнопку, модель не удаляется. Согласно Telescope, даже нет запроса, который пытается удалить его ...

DUMPS

В поле зрения:

App\BuildingWork {#498 ▼
  #guarded: []
  #connection: "sqlite"
  #table: "building_works"
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:6 [▶]
  #original: array:6 [▶]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
}

В контроллере:

App\BuildingWork {#419 ▼
  #guarded: []
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: false
  +wasRecentlyCreated: false
  #attributes: []
  #original: []
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
}

Маршруты:

Route::resource('buildings', 'BuildingController');
Route::resource('buildings.apartments', 'ApartmentController');
Route::resource('buildings.apartments.payments', 'PaymentController');
Route::resource('buildings.buildingworks', 'BuildingWorkController');

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Я смог решить свою проблему, немного подправив контроллер.

Я заметил, что если я удалил "BuildingWork" до $ buildingWork, у меня был идентификатор. Итак, я использовал этот идентификатор, чтобы найти подходящую модель и удалить ее.

public function destroy(Building $building, $buildingWork)
    {
        $i = BuildingWork::find($buildingWork);
        $i->delete();
        return redirect()->route('buildings.apartments.index', $building);
    }
0 голосов
/ 14 марта 2020

Вы можете проверить это

    public function destroy(BuildingWork $buildingWork)
{
    $buildingWork->delete();
    // return redirect()->route('buildings.apartments.index', $building);
}

и просмотреть

@foreach($building->buildingWorks->sortByDesc('urgent') as $buildingWork)
    <tr class="table-{{$buildingWork->getColoring()}}">
        <td>{{$buildingWork->description}}</td>
        <td align="right">
            <a type="button" class="btn btn-success" href="">Marquer comme "fait"</a>
            <form class="d-inline-block" method="post" action="{{route('buildings.buildingworks.destroy', [$buildingWork])}}">
                @method('DELETE')
                @csrf
                <input type="submit" class="btn btn-danger" value="Annuler" />
            </form>            
        </td>
    </tr>
    @endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...