Comment savoir quelle table doit prendre en compte dans la méthode de collecte préparée ?
-
12-12-2019 - |
Question
De ceci Modifier le nom de la table pour les collections de grille d'administration fil, un doute est apparu.
Si nous avons utilisé 2 tables dans notre module personnalisé, comment savoir quelle table doit être utilisée dans la méthode de collecte de préparation ?
J'attends avec impatience votre réponse !
La solution
Modèle multiple pour un module avec une table pour chaque modèle
La création de plusieurs modèles pour un modèle est facile. Vous devez define multiple entities
à ton Module Model resourceModel
et cela corresponding entity entity_id Table
.
Exemple:
<custommodule_resource>
<class>Amit_Custommodule_Model_Resource</class>
<entities>
<custommoduleone>
<table>custommoduleTestOne</table>
</custommoduleone>
<custommoduletwo>
<table>custommoduleTestTwo</table>
</custommoduletwo>
</entities>
</custommodule_resource>
Code de modèle complet pour le module :
<models>
<custommodule>
<class>Amit_Custommodule_Model</class>
<resourceModel>custommodule_resource</resourceModel>
</custommodule>
<custommodule_resource>
<class>Amit_Custommodule_Model_Resource</class>
<entities>
<custommoduleone>
<table>custommoduleTestOne</table>
</custommoduleone>
<custommoduletwo>
<table>custommoduleTestTwo</table>
</custommoduletwo>
</entities>
</custommodule_resource>
</models>
Ce modèle vous donne deux modèles pour un module
Mage::getModel('custommodule/custommoduletwo')
// car les entités sont custommoduletwoMage::getModel('custommodule/custommoduleone')
Processus de définition de classe
Selon magento pour each Model
requis besoin de créer Correspondant Modèle, ressource, collection classe
Classe modèle pour modèle Mage::getModel('custommodule/custommoduleone')
<?php
class Amit_Custommodule_Model_Custommoduleone extends Mage_Core_Model_Abstract
{
public function _construct()
{
$this->_init('custommodule/custommoduleone');
}
}
Classe de ressources
App / Code / Community / AMIT / CUSTRODUDULE / MODÈLE / RESSOURCE / CUSTROMDULEOne.php - Voir plus à:
<?php
class Amit_Custommodule_Model_Resource_Custommoduleone extends Mage_Core_Model_Resource_Db_Abstract
{
/**
* Initialize resource model
*
* @return void
*/
public function _construct()
{
$this->_init('custommodule/custommoduleone', 'table_Primarykey');
}
}
Classe de collecte :
Le chemin du fichier de collection est Collection.php
app/code/community/Amit/Custommodule/Model/Resource/Custommoduleone
<?php
class Amit_Custommodule_Model_Resource_Custommoduleone_Collection
extends Mage_Core_Model_Resource_Db_Collection_Abstract{
protected function _constuct(){
$this->_init('custommodule/custommoduleone');
}
}
Deuxième modèle :
Classe modèle
<?php
class Amit_Custommodule_Model_CustommoduleTwo extends Mage_Core_Model_Abstract
{
public function _construct()
{
$this->_init('custommodule/custommoduletwo');
}
}
Classe de ressources
app/code/community/Amit/Custommodule/Model/Resource/Custommoduletwo.php
<?php
class Amit_Custommodule_Model_Resource_Custommoduletwo extends Mage_Core_Model_Resource_Db_Abstract
{
/**
* Initialize resource model
*
* @return void
*/
public function _construct()
{
$this->_init('custommodule/custommoduletwo', 'table_Primarykey');
}
}
Classe de collecte :
Le chemin du fichier de collection est Collection.php
app/code/community/Amit/Custommodule/Model/Resource/Custommoduletwo
<?php
class Amit_Custommodule_Model_Resource_Custommoduletwo_Collection
extends Mage_Core_Model_Resource_Db_Collection_Abstract{
protected function _constuct(){
$this->_init('custommodule/custommoduletwo');
}
}
REMARQUE : je fournirai prochainement plusieurs tables pour un modèle.