Вопрос:

Как удалить данные из нескольких таблиц в laravel?

laravel

11 просмотра

2 ответа

7 Репутация автора

Я хочу удалить данные из таблицы AssetType и таблицы TypeProperties. Я могу удалить данные таблицы AssetType, но TypeProperties нет. И появляется следующая ошибка:

Попытка получить свойство 'id' не-объекта.

function deleteType($id)
 {
      $type = AssetType::find($id)->delete();
      $property = TypeProperties::where('assettype_id', $type->id)->get()->delete();
      return redirect(url('assettype'));
  }

Автор: Truc Pham Источник Размещён: 11.08.2019 07:21

Ответы (2)


0 плюса

2483 Репутация автора

Решение

Вам не нужно получать AssetType. Вы можете удалить из обеих таблиц, используя то, $idчто вы передаете в функцию.

function deleteType($id)
{
    AssetType::where('id', $id)->delete();
    TypeProperties::where('assettype_id', $id)->delete();

    return redirect(url('assettype'));
}
Автор: Tharaka Dilshan Размещён: 11.08.2019 07:27

0 плюса

1 Репутация автора

Вы можете настроить это в своих миграциях:

$table->foreign('assettype_id')->references('id')->on('assettypes')->onDelete('cascade');

Источник: http://laravel.com/docs/5.8/migrations#foreign-key-constraints

Вы также можете указать желаемое действие для свойств «при удалении» и «при обновлении» ограничения:

$table->foreign('assettype_id')
      ->references('id')->on('assettypes')
      ->onDelete('cascade');
Автор: Axay Gadekar Размещён: 11.08.2019 11:15
Вопросы из категории :
32x32