【发布时间】:2013-06-25 14:19:27
【问题描述】:
我有这个 schema.yml 文件(只是相关部分):
SdrivingMaquina:
actAs:
Timestampable: ~
columns:
idmaquina: { type: integer(8), autoincrement: true, notnull: true, primary: true }
idempresa: { type: integer(4), notnull: true }
patente: { type: string(12), notnull: true }
relations:
Empresa: { local: idempresa, class: SdrivingEmpresa, type: one, foreignType: one, foreignAlias: MaquinaEmpresa, onDelete: CASCADE, onUpdate: CASCADE }
SdrivingMaquinaEmisor:
actAs:
Timestampable: ~
columns:
idmaquinaemisor: { type: integer(8), primary: true, autoincrement: true }
idmaquina: { type: integer(8), notnull: true }
idemisor: { type: integer(8), notnull: true }
relations:
SdrivingEmisor: { onDelete: CASCADE, local: idemisor, foreign: idemisor, type: one }
SdrivingMaquina: { onDelete: CASCADE, local: idmaquina, foreign: idmaquina, type: one }
然后在我运行任务symfony doctrine:build-model 后,我检查了BaseSdrivingMaquina.class.php 类,我可以看到这段代码:
public function setUp()
{
parent::setUp();
$this->hasOne('SdrivingEmpresa as Empresa', array(
'local' => 'idempresa',
'foreign' => 'id',
'onDelete' => 'CASCADE',
'onUpdate' => 'CASCADE'));
$this->hasOne('SdrivingEmpresa', array(
'local' => 'idempresa',
'foreign' => 'idempresa'));
$this->hasMany('SdrivingMaquinaEmisor', array(
'local' => 'idmaquina',
'foreign' => 'idmaquina'));
$timestampable0 = new Doctrine_Template_Timestampable();
$this->actAs($timestampable0);
}
当我尝试插入任何记录时,我收到此错误:
无法调用 Doctrine_Core::set(),第二个参数应该是 设置一对多引用时的 Doctrine_Collection 实例。
这让我认为错误是关系。这篇文章与one 相关,谁能告诉我哪里出了问题或我的错误在哪里?
【问题讨论】:
-
生成错误的代码示例会很有用。
-
@moote 代码在相关帖子里,看看那里(这里不再重复)
-
它是多对一的,因为它是这些类型的默认关系。它是正确的还是您想要一对一? (然后写
SdrivingMaquina: { onDelete: CASCADE, local: idmaquina, foreign: idmaquina, type: one, foreignType: one })对不起,但是你的示例代码真的很难理解,因为它不是英文的,也没有使用约定,但也许只是我...... :) -
@1ed 是的,我想要一对一,这个
SdrivingMaquina: { onDelete: CASCADE, local: idmaquina, foreign: idmaquina, type: one, foreignType: one }和我拥有的有什么区别?或者你的意思是删除SdrivingEmisor关系? -
foreignType: one在最后 :) ...顺便说一下,这两个$this->hasOne('SdrivingEmpresa ...)关系在我看来非常可疑...也许你也应该检查一下。
标签: symfony1 symfony-1.4 doctrine-1.2