最近我将一个数据库表的列更改为另一个。在我执行迁移原则之后:
$this->getRoute()->getObject()
我返回了一个错误:
“SQLSTATE [42S22]:未找到列:1054未知列 '字段列表'中的'p.price_discount'“
如果我:
ProductTable::getInstance()->find(1);
一切正常!
我将缓存完成1000次并构建 - 所有这些都是。
我的schema.yml:
Product:
tableName: products
actAs:
Timestampable:
created:
name: created_at
type: timestamp
form: d-m-Y H:i:s
I18n:
fields: [title, subtitle, description, datasheet, returns_shippings, inspiration, use_care]
actAs:
Sluggable: { fields: [title], uniqueBy: [lang, title] }
columns:
id:
type: integer(4)
primary: true
notnull: true
autoincrement: true
ref:
type: string(45)
unique: true
notnull: true
active:
type: boolean
notnull: true
default: 0
new:
type: boolean
notnull: true
default: 0
title:
type: string(45)
subtitle:
type: string(45)
inspiration: clob
use_care: clob
brand:
type: string(45)
description:
type: clob(65535)
datasheet:
type: clob(65535)
returns_shippings:
type: clob(65535)
price:
type: float
notnull: true
default: 0
votes:
type: integer
notnull: true
default: 0
weight:
type: float
notnull: true
default: 0
iva_id:
type: integer(4)
notnull: true
relations:
Iva:
class: Iva
local: iva_id
foreign: id
foreignAlias: Products
Styles:
foreignAlias: Products
class: Style
refClass: StyleProduct
onDelete: CASCADE
Categories:
foreignAlias: Products
class: Category
refClass: CategoryProduct
onDelete: CASCADE
RelatedProducts:
foreignAlias: Products
class: Product
refClass: RelatedProduct
local: product_id
foreign: product_id1
onDelete: CASCADE
会发生什么?
答案 0 :(得分:1)
你的最后评论是对的。
Doctrine query cache正在使用apc作为后端来存储映射DQL request => SQL请求,难以计算,几乎从不更改:当您更改模型时,它会发生变化。
例如,如果添加列,则以下查询在转换为SQL时会给出不同的结果:SELECT * FROM User u
这是因为SQL请求列出了所有字段,因此成为
SELECT name, email FROM user
应该成为
SELECT name FROM user
删除电子邮件列后,但由于查询缓存而没有。