Ok, donc tout le monde a décidé (et pour une bonne raison) Strait SQL est du diable. Cela nous laisse de nombreuses méthodes pour placer un "intermédiaire" dans notre code pour séparer notre code de la base de données. Je vais maintenant cracher toutes les informations que j'ai recueillies dans l'espoir que quelqu'un puisse me mettre en détresse et me dire ce que j'ai construit.Quelle est la différence entre un ORM, AR, QB et DM?
Un ORM (Object-Relational Mapping) est une série d'outils (dépend étroitement ou étroitement liés) qui mappe les lignes de base de données aux objets de l'application. Dans un AR (Active-Record) est un type d'ORM dans lequel une table ou une vue de base de données est enveloppée dans une classe, ainsi une instance d'objet est liée à une seule ligne dans la table. Le mappage de données (DM) est un type d'ORM qui consiste à créer des mappages d'éléments de données entre deux modèles de données distincts.
Tous les trois prétendent travailler comme ceci:
$user = new User();
$user->name = 'Fred';
$user->save();
Habituellement avec quelque chose de classe utilisateur comme ceci:
class User extends Model {
// Specify the database table
protected $table = "users";
// Define your fields
protected $fields = array(
'id' => array('type' => 'int', 'primary' => true),
'name' => array('type' => 'string', 'required' => true),
'email' => array('type' => 'text', 'required' => true)
);
}
Avec cette configuration, vous pouvez facilement récupérer les lignes sans le besoin d'écrire SQL.
// users
$users = $user->fetch(array('id' => 3));
Certaines classes AR semblent en fait plus comme ceci:
$db->where('id' => 3);
$db->join('posts', 'posts.user_id = users.id');
$results = $db->get('users');
Ok, ceci est maintenant où il obtient poilue. Tout le monde et son frère semblent avoir un point de vue différent sur le type de code qui tombe là. Alors que la plupart conviennent qu'un AR ou DM est un type d'ORM - mais parfois les lignes qui indiquent les AR des DM semblent étaler.
J'ai écrit une classe qui utilise un seul objet ($ db) dans lequel vous faites des appels à cet objet et il gère la création SQL pour l'enregistrement/la récupération des résultats. Donc, la question est "qu'est-ce que c'est?", Et pourquoi les gens ne sont pas d'accord sur ces termes?
Buzzword Bingo ... La maison pleine! –