对不起这个非常具体的问题,我有几次这个问题,我的解决方案(不是最好的是重命名表并做更多的东西),显然它不是一个真正的解决方案,这次我再次遇到同样的情况,有一张桌子,我甚至没有操纵,我想知道以前是否有人遇到过同样的问题。
使用symfony 1.4和doctrine,我从查询不相关的表中得到此错误
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
我认为这是正确的,但在我的学说/基础/ 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'));
仍然,我得到了错误,如果我制作翻拍模型,那么一切都将消失
没有简单的方法可以从DB创建schema.yml文件吗?
编辑: 抛出异常的查询是这个
$query = Doctrine_Query::create()
->from('Times a')
->where('a.employee_id = ?', $employeeId)
->orderBy('a.start_date ASC');
$results = $query->execute();
我检查了员工的基础,它与培训没有关系,它有培训细节......但不是直接培训,我重新创建了我的模型10次仍然是相同的
答案 0 :(得分:2)
“仍然,我得到了错误,如果我制作翻拍模型,那么一切都将消失”
这是因为您通过基类编辑了设置,在构建模型时基类总是被覆盖。
“没有简单的方法可以从DB创建schema.yml文件?”
这没有意义。很明显,您可以从架构生成架构文件,否则您将没有架构文件。
根据给定的模式文件,关系的位置显示正确。根据{{3}}:
“指定关系时,只需要在外键所在的末尾指定关系。解析模式文件时,它会反映关系并自动构建另一端。如果指定另一端手动关系,自动生成将无效。“
在构建模型文件时,doctrine将在基类中正确配置setUp
方法,因此您不需要这样做。如果要更改关系,请通过模式文件进行更改,然后重建模型文件。
我怀疑您遇到的问题在于如何通过DQL或模型引用构建查询,因为您发布了错误:
“找不到列:'字段列表'中的1054未知列'o.training_id'”
- 编辑 -
根据错误和您的查询,您可以指定要选择的列,请尝试以下操作:
$query = Doctrine_Query::create()
->select('a.*')
->from('Times a')
->where('a.employee_id = ?', $employeeId)
->orderBy('a.start_date ASC');
$results = $query->execute();