使用或迁移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');
这不是代码的位置。确保在创建主键时,如果使用无符号,则外键也使用无符号。