伪造迁移代码点火器 4 外键错误



使用或迁移Codeigniter生成代码中的关系时出现或错误

迁移产品

public function up()
{
$this->forge->addField([
'id'            => [
'type'           => 'INT',
'unsigned'       => TRUE,
'auto_increment' => TRUE
],
'categories_id' => [
'type'          => 'INT'
],
'product'       => [
'type'          => 'VARCHAR',
'constraint'    => '255'
]
]);
$this->forge->addKey('id', TRUE);
$this->forge->createTable('products');
$this->forge->addForeignKey('categories_id', 'categories', 'id');
}

迁移类别

$this->forge->addField([
'id'            => [
'type'           => 'INT',
'unsigned'       => TRUE,
'auto_increment' => TRUE
],
'category'      => [
'type'          => 'VARCHAR',
'constraint'    => '255'
],
'ordination'    => [
'type'          => 'INTEGER'
],
'isactive'      => [
'type'          => 'INTEGER',
'default'       => 1
]
]);
$this->forge->addKey('id', TRUE);
$this->forge->createTable('categories');

错误

类型:代码点火器\数据库\异常\数据库异常 消息:找不到字段categories_id

此代码的问题在于调用后

$this->forge->createTable('products');

它将重置查询对象,因此它将丢失对表的引用,并且找不到您要查找的特定字段。因此,请像这样更改查询的顺序:

$this->forge->addForeignKey('categories_id', 'categories', 'id');
$this->forge->createTable('products');

这不是代码的位置。确保在创建主键时,如果使用无符号,则外键也使用无符号。

相关内容

  • 没有找到相关文章

最新更新