2013-06-25 2 views
0

Я этот 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); 
    } 

Когда я пытаюсь вставить любую запись, я получаю эту ошибку:

Couldn't call Doctrine_Core::set(), second argument should be an instance of Doctrine_Collection when setting one-to-many references.

Что заставляет меня думать, что ошибка - это отношение. Это сообщение связано с этим one может ли кто-нибудь сказать мне, что случилось, или где моя ошибка?

+0

Примером может служить код кода, который генерирует ошибку. – moote

+0

@moote код находится в соответствующем сообщении, посмотрите там (для того, чтобы не повторять то же самое здесь) – Reynier

+0

Это много-к-одному, потому что это отношения по умолчанию этих отношений. Правильно это или вы хотите один-к-одному? (напишите 'SdrivingMaquina: {onDelete: CASCADE, local: idmaquina, foreign: idmaquina, type: one, foreignType: one}' then) Извините, но очень сложно понять ваш пример кода, поскольку он не на английском языке, а не использует соглашения, но, возможно, это просто я ... :) – 1ed

ответ

1

Чтобы иметь отношение один-к-одному, вы должны написать

SdrivingMaquina: { onDelete: CASCADE, local: idmaquina, foreign: idmaquina, type: one, foreignType: one } 

так добавить параметр foreignType: one.