Метод enableForeignKeyConstraints
Метод enableForeignKeyConstraints применяется к классу Schema
и позволяет включить проверку ограничений внешних ключей, которая была
отключена ранее с помощью метода disableForeignKeyConstraints.
Этот метод особенно полезен при выполнении массовых операций с данными,
когда требуется временно отключить проверки для ускорения выполнения.
Метод не принимает никаких параметров и возвращает void.
Синтаксис
<?php
Schema::enableForeignKeyConstraints();
?>
Пример
Давайте отключим проверку внешних ключей перед массовой вставкой данных, а затем снова включим её:
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesDB;
use IlluminateSupportFacadesSchema;
class OrderController extends Controller
{
public function importOrders()
{
Schema::disableForeignKeyConstraints();
DB::table('orders')->insert([
['user_id' => 1, 'total' => 100.50],
['user_id' => 2, 'total' => 200.75],
['user_id' => 3, 'total' => 150.25],
]);
Schema::enableForeignKeyConstraints();
return "Orders imported successfully";
}
}
?>
Результат выполнения кода:
"Orders imported successfully"
Пример
Используем метод в миграции для включения проверок после массового обновления:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateSupportFacadesSchema;
return new class extends Migration
{
public function up()
{
Schema::disableForeignKeyConstraints();
DB::table('orders')
->where('status', 'pending')
->update(['status' => 'completed']);
Schema::enableForeignKeyConstraints();
}
public function down()
{
Schema::disableForeignKeyConstraints();
DB::table('orders')
->where('status', 'completed')
->update(['status' => 'pending']);
Schema::enableForeignKeyConstraints();
}
};
?>
Пример
Использование метода в транзакции для обеспечения целостности данных:
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesDB;
use IlluminateSupportFacadesSchema;
class ProductController extends Controller
{
public function updateCategories()
{
DB::transaction(function () {
Schema::disableForeignKeyConstraints();
DB::table('products')
->where('category_id', 1)
->update(['category_id' => 2]);
DB::table('categories')
->where('id', 1)
->delete();
Schema::enableForeignKeyConstraints();
});
return "Categories updated successfully";
}
}
?>
Результат выполнения кода:
"Categories updated successfully"
Смотрите также
-
метод
disableForeignKeyConstraints,
который отключает проверку внешних ключей -
метод
create,
который создает новую таблицу в базе данных -
метод
table,
который позволяет изменять существующую таблицу -
метод
transaction,
который выполняет операции в транзакции