Salut @ tous !

Je n'arrive pas à comprendre comment faire des jointures avec Datamapper et Codeigniter 2.1.2

J'ai la table users qui a les champs suivants :
- id
- pseudo

une 2ème table usersoptions qui a les champs suivants :
- id
- id_user
- name_option
- value_option

et une 3ème table pour la liaison users_usersoptions :
- id
- users_id
- usersoptions_id

Voilà ou j'en suis avec le contrôleur User :

class User extends DataMapper
{
var $has_many = array('users_usersoptions');
function __construct($id = NULL)
{
parent::__construct($id);
}
function get_users_inline($id)
{
$u = new User();
$r = $u->get_where(array('last_activity <' => (time() - 120)));
return $r->id;
}
}

Celui-ci récupère id des uers dont le timestamp en BDD est inférieur au timestamp actuel - 2 minutes.
Comment faire pour vérifier également que dans la table usersoptions il n'existe aucune entrée ayant le nom inline ayant la valeur "oui"?

Avec Active Record ça donnerait quelque chose comme :

$this->db->select('users.id')->join('usersoptions', 'usersoptions.id_user = users.id')->where('name_option', 'inline')->where('value_option !=', 'oui');
$query = $this->db->get('users');
return $query->num_rows();

Merci de m'aider

1 réponse


Va sur http://www.simpledev.fr il y'a un tuto spécial datamapper avec Codeigniter