【发布时间】:2023-03-27 13:17:02
【问题描述】:
抱歉这个非常具体的问题,我遇到过几次这个问题,而我的解决方案(不是最好的方法是重命名表并做更多的事情),显然它不是一个真正的解决方案,这次我又遇到了同样的情况,有一张我什至没有处理过的表,我想知道以前是否有人遇到过同样的问题。
使用 symfony 1.4 和教义,我从一个不相关的表的查询中得到这个错误
Column not found: 1054 Unknown column 'o.training_id' in 'field list'
我真的不知道出了什么问题,在我的 schema.yml 我有这样的东西
OhrmTraining:
connection: doctrine
tableName: training
columns:
id_training:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
name:
type: string(60)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
TrainingDetail:
connection: doctrine
tableName: training_detail
columns:
id_training_detail:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
training:
type: integer(4)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
relations:
OhrmTraining:
local: training
foreign: id_training
type: one
它与其他表的详细信息有关
喜欢这个
TrainingDetail:
connection: doctrine
tableName: training_detail
columns:
id_training_deetail:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
training:
type: integer(4)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
relations:
Training:
local: training
foreign: id_training
type: one
我认为它是正确的,但在我的学说/base/BaseTraining.class 我最后有这样的东西(用于训练)
public function setUp()
{
parent::setUp();
$this->hasMany('TrainingDetail', array(
'local' => 'id', <--- this should be the id_training_detail??
'foreign' => 'training_id')); <--- this should be training?
我不知道他们为什么会这样,或者他们是否应该那样......有人可以帮我解决这个问题吗?
我把它们改成了
public function setUp()
{
parent::setUp();
$this->hasMany('TrainingDetail', array(
'local' => 'id_training',
'foreign' => 'training'));
我还是得到了错误,如果我重新制作模型,所有的都将消失
没有简单的方法可以从数据库创建 schema.yml 文件吗?
编辑: 抛出异常的查询是这样的
$query = Doctrine_Query::create()
->from('Times a')
->where('a.employee_id = ?', $employeeId)
->orderBy('a.start_date ASC');
$results = $query->execute();
我检查了员工的基础,它与培训无关,它与培训细节有关......但不是直接与培训,我重新创建了我的模型 10 次,仍然是一样的
【问题讨论】:
-
我不认为我可以开始理解您的架构,因为您的术语很混乱。也就是说,您在几个地方将
training拼写为trainning。也就是说,在您的关系中,您正在定义local: training,但该字段名为trainning。可能还有其他错误。 -
对不起,真名不是training,是CompanySomethingTrainning,不过我是为了这个案子改的
-
仔细检查整个模式文件的拼写和缩进。如果缩进错误,Doctrine 可能会混淆。
-
我检查了它们,它们似乎工作正常,我尝试将它们全部删除,但没有,另一件事是我的 schema.yml 中没有提到表“Times”,我应该声明它吗?
标签: doctrine symfony-1.4