Je voudrais partager mon approche pour cela.
D'abord, je fait ma propre classe MY_Model
qui ont get_detail
, get_total
, get_list
, méthode get_all
, insert
, update
et delete
. J'ai mis cette classe dans le dossier system/application/libraries
dossier. Cette classe extends
classe de CI. Toutes les requêtes connexes dans cette classe utilisant $this->tablename
. Ensuite, la classe modèle réel aura besoin que ce code pour le faire fonctionner:
class Product_model extends MY_Model {
function Product_model()
{
parent::MY_Model();
$this->tablename = 'product';
}
}
Quand je dois rejoindre 2 tables ou plus, je mets le code dans le modèle de la table principale. Exemple: J'ai les tables product
, category
et user
. Si j'ai besoin d'obtenir le produit, avec le nom de la catégorie et le nom d'utilisateur qui insèrent les données, alors la table 'principale' sera le produit. Je vais avoir cette méthode à l'intérieur Product_model
:
function get_list_joined($start=0, $item_num=10, $condition='', $order_by='')
{
//do query for product, left join to category and user table
//return result
}
En utilisant cette approche, je vais encore avoir une fonction get_list
qui renvoient uniquement des colonnes de la table product
, et ont également la fonction get_list_joined
que le retour colonne de la table product
, table category
et user
table.
Il est important de déterminer d'abord la classe principale, afin d'éviter que plusieurs méthodes ne fassent la même chose.
Pour joindre, la classe de base de données incluse dans CI est suffisante. Mais je préfère utiliser AdoDB comme bibliothèque de base de données. Il offre plus de support de base de données que les CI. Mais pour commencer, et vous n'utilisez que mysql, alors la base de données de CI est suffisante. Apprenez-en un à la fois.
Uau ... des informations très nouvelles et très utiles sur ce MY_Model ... merci beaucoup – Roberto