Мне интересно, есть ли лучший (более гладкий) способ отключить проверку внешнего ключа, обрезать таблицу, вставить данные и включить проверку внешнего ключа при выгрузке базы данных cakephp 3. Это мой текущий код, который не работаетУсекающий стол перед посевом в cakephp
<?php
use Migrations\AbstractSeed;
use Cake\Datasource\ConnectionManager;
/**
* Categories seed.
*/
class CategoriesSeed extends AbstractSeed
{
public function run()
{
$connection = ConnectionManager::get('default');
$connection->execute('SET FOREIGN_KEY_CHECKS = 0');
$connection->execute('TRUNCATE table categories');
$data = [
['id' => 1, 'name' => 'Audio, video & photo', 'parent' => 0, 'alias' => 'audio-video-and-photo', 'image' => ''],
['id' => 2, 'name' => 'Music players', 'parent' => 1, 'alias' => 'music-players', 'image' => ''],
['id' => 3, 'name' => 'Musical instruments', 'parent' => 1, 'alias' => 'musical-instruments', 'image' => ''],
];
$table = $this->table('categories');
$table->insert($data)->save();
$connection->execute('SET FOREIGN_KEY_CHECKS = 1');
}
}
Есть ли способ, поэтому мне не нужно использовать ConnectionManager? Возможно ли это при использовании AbstractSeed, например:
$table = $this->table('categories');
$table->query('SET FOREIGN_KEY_CHECKS = 0');
$table->truncate();
Каков ваш способ решения этой проблемы?
Nice! Спасибо за помощь! –