Salut,
Je rencontre un problème avec un belongsTo et un paginate.
En faite j'ai une pages qui récupères chaque postes en ligne et qui doit les affichais dans l'odre décroisent de création donc le plus récent au debut. Sauf que avec mon belongsTo il n'affiche rien, sauf une grande ligne d'erreur.
Database Error
Error: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous
SQL Query: SELECT `Review`.`id`, `Review`.`title`, `Review`.`id_category`, `Review`.`content`, `Review`.`slug`, `Review`.`created`, `Review`.`online`, `Review`.`id_author`, `Category`.`name`, `User`.`username` FROM `1_dev`.`reviews` AS `Review` LEFT JOIN `1_dev`.`categories` AS `Category` ON (`Review`.`id_category` = `Category`.`id`) LEFT JOIN `1_dev`.`users` AS `User` ON (`Review`.`id_author` = `User`.`id`) WHERE `id` = 7 LIMIT 1
Notice: If you want to customize this error message, create app/View/Errors/pdo_error.ctp
Voila mon BelongsTo
<?php
class Review extends AppModel{
public $name ='Review';
public $belongsTo = array(
'Category' => array(
'foreignKey' => 'id_category',
'fields' => array('Category.name'),
),
'User' => array(
'foreignKey' => 'id_author',
'fields' => array('User.username')
)
);
...
et mon début de ReviewsController
class ReviewsController extends AppController{
public $paginate = array(
'limit' => 15,
'order' => array(
'Review.created' => 'desc'
)
);
public $uses = array('Review','Category');
function index(){
Controller::paginate();
$data = $this->paginate('Review', array('Review.online' => 1));
$this->set('review', $data);
}
Voila, j'espere avoir donner assez d'indication :)
Merci d'avance
dans ta ligne 3 de ta fonction show, met plutôt
'conditions' => array('Review.id' => $id)
Essaye en précisant dans ton model de quel model vient id_category et id_author comme tu l'a fait pour tes fields.
A priori ton erreur SQL vient du fait qu'il ne sait pas quel id choisir..
En faite hier je me suis tromper mais c'est ce controller
function show($id = null, $slug = null){
$review = $this->Review->find('first', array(
'conditions' => array('id' => $id)
));
if(empty($review)){
throw new NotFoundException('Aucun review ne correspond à cet adresse');
}
if($slug != $review'Review']'slug']){
$this->redirect($review'Review']'link'], 301);
}
$this->set('review', $review);
}
Zenkiai, je n'est pas trop compris ce que tu voulais dire ?