Alors voilà je me suis crée mon propre mvc et pour faire des requête je fais ainsi:
$this->loadModel('Posts');
$r = $this->Posts->findFirst(array(
'conditions' => array('Posts.id' => $id),
'joins' => array(
array(
'table' => 'users',
'type' => 'left',
'conditions' => 'Posts.user_id = Users.id'
),
array(
'table' => 'level',
'type' => 'left',
'conditions' => 'Users.lvl_id = Level.id'
)
)
));
Mais je voudrais savoir si c'est possible de faire comme ceci pour les jointures:
$this->loadModel('Posts');
$r = $this->Posts->findFirst(array(
'conditions' => array('Posts.id' => $id),
'joins' => array(
'table' => 'users',
'type' => 'left',
'conditions' => 'Posts.user_id = Users.id'
),
'joins' => array(
'table' => 'level',
'type' => 'left',
'conditions' => 'Users.lvl_id = Level.id'
)
));
Je voudrais si cela est possible de faire plusieurs tableau joins au lieu de faire plusieurs tableau dans un seul tableau joins.Voici ma fonction findFirst()
public function findFirst($d) {
return current($this->find($d));
}
public function find($d = null) {
if($this->validate) {
require_once CORE.DS.'libs'.DS.'Validate.php';
$v = new Validate($this->validate);
$v->_return();
}
$sql = 'SELECT ';
if(isset($d['fields'])) {
if(isset($d['join'])) {
}
if(!is_array($d['fields'])) {
$sql .= $d['fields'];
} else {
$sql .= implode(', ', $d['fields']);
}
} else {
$sql .= '*';
}
$sql .= ' FROM '.$this->table.' as '.get_class($this);
if(isset($d['joins'])) {
for($i = 0; $i < count($d['joins']); $i++) {
$sql .= ' '.strtoupper($d['joins'][$i]['type']).' JOIN '.strtolower($d['joins'][$i]['table']).' as '.ucfirst($d['joins'][$i]['table']);
$sql .= ' ON '.$d['joins'][$i]['conditions'];
}
}
if(isset($d['conditions'])) {
$sql .= ' WHERE ';
if(!is_array($d['conditions'])) {
$sql .= $d['conditions'];
} else {
$cond = array();
foreach ($d['conditions'] as $k => $v) {
//if(!is_numeric($v)) {
$v = '"'.mysql_escape_string($v).'"';
//}
$cond[] = "$k = $v";
}
$sql .= implode(' AND ', $cond);
}
}
if(isset($d['limit'])) {
$sql .= ' LIMIT '.$d['limit'];
}
if(isset($d['order_by'])) {
$sql .= ' ORDER BY ';
}
debug($sql);die();
$pre = $this->db->prepare($sql);
$pre->execute();
return $pre->fetchAll(PDO::FETCH_OBJ);
}
Merci d'avance.....