я определяю эти модели
<?php
class Viaje extends Doctrine_Record {
public function setTableDefinition() {
$this->hasColumn('fecha', 'date');
$this->hasColumn('productor_id', 'integer');
$this->hasColumn('transporte_id', 'integer');
$this->hasColumn('chofer_id', 'integer');
$this->hasColumn('desde', 'string');
$this->hasColumn('hasta', 'string');
$this->hasColumn('kilometros', 'decimal');
$this->hasColumn('comision', 'decimal');
$this->hasColumn('tarifa_transportadora', 'decimal');
$this->hasColumn('tarifa_transporte', 'decimal');
$this->hasColumn('cargos_extras', 'decimal');
$this->hasColumn('imputado', 'integer', 1, array('default' =>0));
$this->hasColumn('borrado', 'integer', 1, array('default' =>0));
}
public function setUp() {
$this->setTableName('viaje');
$this->actAs('Timestampable');
$this->hasOne('Productor', array(
'local' => 'productor_id',
'foreign' => 'id')
);
$this->hasOne('Transporte', array(
'local' => 'transporte_id',
'foreign' => 'id')
);
$this->hasOne('Chofer', array(
'local' => 'chofer_id',
'foreign' => 'id')
);
$this->hasMany('Chofer as Choferes', array(
'local' => 'id',
'foreign' => 'transporte_id')
);
}
// setters
public function setID($id) { $this->_set('id', $id); }
public function setFecha($fecha) { $this->_set('fecha', $fecha); }
public function setProductorID($productorID) { $this->_set('productor_id',
$productorID); }
public function setProductor($productor) { $this->_set('productor',
$productor); }
public function setTransporteID($transporteID) {
$this->_set('transporte_id', $transporteID); }
public function setTransporte($transporte) { $this->_set('transporte',
$transporte); }
public function setChoferID($choferID) { $this->_set('chofer_id',
$choferID); }
public function setChofer($chofer) { $this->_set('chofer', $chofer); }
public function setDesde($desde) { $this->_set('desde', $desde); }
public function setHasta($hasta) { $this->_set('hasta', $hasta); }
public function setKilometros($kilometros) { $this->_set('kilometros',
$kilometros); }
public function setComision($comision) { $this->_set('comision', $comision);
}
public function setTarifaTransportadora($tarifaTransportadora) {
$this->_set('tarifa_transportadora', $tarifaTransportadora); }
public function setTarifaTransporte($tarifaTransporte) {
$this->_set('tarifa_transporte', $tarifaTransporte); }
public function setCargosExtras($cargosExtras) {
$this->_set('cargos_extras', $cargosExtras); }
public function setImputado($imputado) { $this->_set('imputado', $imputado);
}
public function setBorrado($borrado) { $this->_set('borrado', $borrado); }
// getters
public function getID() { return $this->_get('id'); }
public function getFecha() { return $this->_get('fecha'); }
//public function getProductorID() { return $this->_get('productor_id'); }
/*
* @return Productor
*/
public function getProductor() { return $this->_get('productor'); }
//public function getTransporteID() { return $this->_get('transporte_id'); }
/*
* @return Transporte
*/
public function getTransporte() { return $this->_get('transporte'); }
//public function getChoferID() { return $this->_get('chofer_id'); }
/*
* @return Chofer
*/
public function getChofer() { return $this->_get('chofer'); }
public function getDesde() { return $this->_get('desde'); }
public function getHasta() { return $this->_get('hasta'); }
public function getKilometros() { return $this->_get('kilometros'); }
public function getComision() { return $this->_get('comision'); }
public function getTarifaTransportadora() { return
$this->_get('tarifa_transportadora'); }
public function getTarifaTransporte() { return
$this->_get('tarifa_transporte'); }
public function getCargosExtras() { return $this->_get('cargos_extras'); }
public function getImputado() { return $this->_get('imputado'); }
public function getBorrado() { return $this->_get('borrado'); }
/**
* Marca como borrado un transporte
*/
public function delete(){
$this->setBorrado(1);
$this->save();
}
}
<?php
class Productor extends Doctrine_Record {
public function setTableDefinition() {
$this->hasColumn('nombre', 'string', 60);
$this->hasColumn('borrado', 'integer', 1, array('default' =>0));
}
public function setUp() {
$this->setTableName('productor');
$this->actAs('Timestampable');
}
public function setID($id) { $this->_set('id', $id); }
public function setNombre($nombre) { $this->_set('nombre', $nombre); }
public function setBorrado($borrado) { $this->_set('borrado', $borrado); }
// getters
public function getID() { return $this->_get('id'); }
public function getNombre() { return $this->_get('nombre'); }
public function getBorrado() { return $this->_get('borrado'); }
/**
* Marca como borrado un transporte
*/
public function delete(){
$this->setBorrado(1);
$this->save();
}
}
<?php
class Transporte extends Doctrine_Record {
public function setTableDefinition() {
$this->hasColumn('nombre', 'string', 60);
$this->hasColumn('cuit', 'integer', 11);
$this->hasColumn('borrado', 'integer', 1, array('default' =>0));
}
public function setUp() {
$this->setTableName('transporte');
$this->actAs('Timestampable');
$this->hasMany('Chofer as Choferes', array(
'local' => 'id',
'foreign' => 'transporte_id'
));
}
// setters
public function setNombre($nombre) { $this->nombre = $nombre; }
public function setCUIT($cuit) { $this->cuit = $cuit; }
public function setBorrado($borrado) { $this->borrado = $borrado; }
// getters
public function getNombre() { return $this->nombre; }
public function getCUIT() { return $this->cuit; }
public function getBorrado() { return $this->borrado; }
/**
* Marca como borrado un transporte
*/
public function delete(){
$this->setBorrado(1);
$this->save();
}
}
<?php
class Chofer extends Doctrine_Record {
public function setTableDefinition() {
$this->hasColumn('transporte_id', 'integer', 10);
$this->hasColumn('nombre', 'string', 60);
$this->hasColumn('cuil', 'integer', 11);
$this->hasColumn('dominio', 'string', 6);
$this->hasColumn('borrado', 'integer', 1, array('default' =>0));
}
public function setUp() {
parent::setUp();
$this->setTableName('chofer');
$this->actAs('Timestampable');
}
// setters
public function setTransporteId($transporte_id) { $this->transporte_id =
$transporte_id; }
public function setNombre($nombre) { $this->nombre = $nombre; }
public function setCUIL($cuil) { $this->cuil = $cuil; }
public function setDominio($dominio) { $this->dominio = $dominio; }
public function setBorrado($borrado) { $this->borrado = $borrado; }
// getters
public function getTransporteId() { return $this->transporte_id; }
public function getNombre() { return $this->nombre; }
public function getCUIT() { return $this->cuit; }
public function getDominio() { return $this->dominio; }
public function getBorrado() { return $this->borrado; }
/**
* Marca como borrado un transporte
*/
public function delete(){
$this->setBorrado(1);
$this->save();
}
}
Но когда я делаю $viaje = Doctrine::getTable('Viaje')->find(1);
и пытаюсь
доступ $viaje->productor
или $viaje->getProductor()
, я получаю это исключение:
Неустранимая ошибка: необработанное исключение 'Doctrine_Record_UnknownPropertyException'
с сообщением 'Неизвестная запись свойства / связанный компонент "производитель" на
"Viaje" 'в F: \ Proyectos \ TDT
Apps \ код \ приложения \ хелперы \ доктрина \ Lib \ Doctrine \ запись \ Filter \ Standard.php: 55
Трассировка стека:
# 0 F: \ Proyectos \ TDT
Приложения \ код \ Application \ хелперы \ доктрина \ Lib \ Doctrine \ Record.php (1395):
Doctrine_Record_Filter_Standard-> filterGet (Object (Viaje), 'productor')
# 1 F: \ Proyectos \ TDT Apps \ code \ application \ models \ viaje.php (71):
Doctrine_Record -> _ GET ( 'Productor')
# 2 F: \ Proyectos \ TDT Apps \ code \ application \ controllers \ dashboard.php (20):
Viaje-> getProductor ()
# 3 [внутренняя функция]: Dashboard-> index ()
# 4 F: \ Proyectos \ TDT Apps \ code \ system \ core \ CodeIgniter.php (297):
call_user_func_array (Array, Array)
# 5 F: \ Proyectos \ TDT Apps \ code \ index.php (163):
require_once ( 'F: \ Proyectos \ TD ...')
# 6 {main}
брошенный в F: \ Proyectos \ TDT
Apps \ код \ приложения \ хелперы \ доктрина \ Lib \ Doctrine \ запись \ Filter \ Standard.php
по линии 55
Почему я не могу загрузить соответствующие записи?