升级到内置后端

从迁移 4.3 开始,有一个新的迁移后端,它使用 CakePHP 的数据库抽象和 ORM。在 4.4 中,builtin 后端成为默认后端。从长远来看,这将允许删除 phinx 作为依赖项。这极大地减少了迁移的依赖项足迹。

什么是相同的?

您的迁移无需做太多更改就能适应新的后端。迁移后端实现了所有 phinx 接口,并且可以基于 phinx 类运行迁移。如果您的迁移以无法通过以下概述的更改解决的方式工作,请打开一个问题,因为我们希望尽可能保持兼容性。

什么不同?

如果您的迁移正在使用 AdapterInterface 来获取行或更新行,则需要更新您的代码。如果您使用 Adapter::query() 来执行查询,则此方法的返回值现在是 Cake\Database\StatementInterface。这会影响 fetchAll()fetch()

// This
$stmt = $this->getAdapter()->query('SELECT * FROM articles');
$rows = $stmt->fetchAll();

// Now needs to be
$stmt = $this->getAdapter()->query('SELECT * FROM articles');
$rows = $stmt->fetchAll('assoc');

获取单个行的类似更改。

// This
$stmt = $this->getAdapter()->query('SELECT * FROM articles');
$rows = $stmt->fetch();

// Now needs to be
$stmt = $this->getAdapter()->query('SELECT * FROM articles');
$rows = $stmt->fetch('assoc');

新后端的问题?

新后端默认启用。如果您的迁移在使用内置后端运行时包含错误,请打开 一个问题。您也可以通过应用程序配置切换回 phinx 后端。将以下内容添加到您的 config/app.php 中。

return [
    // Other configuration.
    'Migrations' => ['backend' => 'phinx'],
];