Après avoir travaillé dur dans mon intégration ZF/Doctrine, j'ai un problème pour "traduire" mon travail Zend_Db précédent en Doctrine. Je generate-modèles-db pour créer les modèles et je ne suis arrivé à accéder à certaines propriétés forment le point de vue, mais seulement celles qui concernent la table dont le modèle que j'ai créé comme ceci:Récupération des informations des tables associées avec Zend Framework et Doctrine 1.2
$usuarios = new Model_Users();
$usr = $usuarios->getTable()->findAll();
$this->view->show = $usr;
Model_Users est liée à deux tables avec ce méthode:
public function setUp()
{
parent::setUp();
$this->hasMany('Model_PlanillaUsers as PlanillaUsers', array(
'local' => 'id',
'foreign' => 'users_id'));
$this->hasMany('Model_UsersHasPais as UsersHasPais', array(
'local' => 'id',
'foreign' => 'users_id'));
}
En ce moment je suis préoccupé par UsersHasPais ... qui me dit ce que pais.pais champs et qui correspondent users.id entrées. Ceci est le Model_Pais:
abstract class Model_Base_Pais extends Doctrine_Record
{
public function setTableDefinition()
{
$this->setTableName('pais');
$this->hasColumn('id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => false,
'primary' => true,
'autoincrement' => true,
));
$this->hasColumn('pais', 'string', 20, array(
'type' => 'string',
'length' => 20,
'fixed' => false,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
));
}
public function setUp()
{
parent::setUp();
$this->hasMany('Model_UsersHasPais as UsersHasPais', array(
'local' => 'id',
'foreign' => 'pais_id'));
}
}
Et voici la table de jointure:
abstract class Model_Base_UsersHasPais extends Doctrine_Record
{
public function setTableDefinition()
{
$this->setTableName('users_has_pais');
$this->hasColumn('id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => false,
'primary' => true,
'autoincrement' => true,
));
$this->hasColumn('users_id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
));
$this->hasColumn('pais_id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
));
}
public function setUp()
{
parent::setUp();
$this->hasOne('Model_Users as Users', array(
'local' => 'users_id',
'foreign' => 'id'));
$this->hasOne('Model_Pais as Pais', array(
'local' => 'pais_id',
'foreign' => 'id'));
}
}
Maintenant ce que je veux être en mesure de récupérer, ... sinon assez clair est les champs appelés pais de la table pais qui correspond à mon ID utilisateur actuel. Comment puis-je faire cela avec Doctrine?
EDIT:
//Added to Model_Users class
public function saveUser($user) {
$this->email = $user['email'];
$this->password = crypt($user['password'], $this->_salt);
$this->url = $user['url'];
$this->responsable = $user['responsable'];
$this->role = $user['role'];
$this->fecha = Zend_Date::now()->toString('yyyyMMddHHmmss');
$id = $this->save();
}
//Users table schema
Users:
connection: 0
tableName: users
columns:
id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
email:
type: string(50)
fixed: false
unsigned: false
primary: false
notnull: false
autoincrement: false
password:
type: string(250)
fixed: false
unsigned: false
primary: false
notnull: false
autoincrement: false
url:
type: string(50)
fixed: false
unsigned: false
primary: false
notnull: false
autoincrement: false
responsable:
type: string(50)
fixed: false
unsigned: false
primary: false
notnull: false
autoincrement: false
role:
type: string(25)
fixed: false
unsigned: false
primary: false
notnull: false
autoincrement: false
fecha:
type: timestamp(25)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
relations:
PlanillaUsers:
local: id
foreign: users_id
type: many
UsersHasPais:
local: id
foreign: users_id
type: many
@Graham Je reçois un alias 'relation inconnu Model_UsersHasPais' exception –
@ la_f0ka Je suis nouveau à la cadre moi-même, vérifiez que votre journal d'erreur Apache pour ce que je l'ai vu, mais ne me souviens pas ce qui le cause. Je pense que cela peut être manquant »ou, à partir d'une ligne dans votre code de configuration du modèle, mais je ne suis pas à 100%. – Graham
@ la_f0ka Ou essayez de changer la requête à leftJoin -> ('p.Model_UsersHasPais s') -> leftJoin (p.Model_Users u ') ie déposez les s avant Model_Users et remplacez par p – Graham