0
votes

Nom de colonne en double 'id' CODEIGNITER

Bonjour, je ne comprends pas pourquoi j'ai cette erreur

Ceci est une requête:

function get_num_post($args = array()) {
    $this->db->from("diario");
    if (isset($args["tag"]) && $args["tag"]) :
        $this->db->join("diario_tag_rif","diario_tag_rif.post_id = diario.id");
        $this->db->group_by("diario.id");
        $this->db->where("diario_tag_rif.tag_id",$args["tag"]->id);
    endif;
    if (isset($args["anno"]) && $args["anno"]) :
        $this->db->where("YEAR(diario.data)",$args["anno"]);
    endif;
    if (isset($args["mese"]) && $args["mese"]) :
        $this->db->where("MONTH(diario.data)",$args["mese"]);
    endif;
    $this->db->join("diario_categorie","diario_categorie.id = diario.categoria_id");
    return $this->db->count_all_results();
}

Pouvez-vous m'aider pour mon problème? Merci beaucoup :)


2 commentaires

Suppression de la balise non pertinente


où ? dans rejoindre?


3 Réponses :


0
votes

La meilleure façon de résoudre ce problème, vous pouvez ajouter la fonction de sélection du générateur de requêtes.

$ this-> db-> select ("diario. *, diario.id as id_diario"); // mentionne ici le champ sera vous sélectionnez et vous devez créer un alias du champ id.

Donc, le script complet montré comme ceci:

    function get_num_post($args = array()) {
        $this->db->from("diario");
$this->db->select("diario.*,diario.id as id_diario");
        if (isset($args["tag"]) && $args["tag"]) :
            $this->db->join("diario_tag_rif","diario_tag_rif.post_id = diario.id");
            $this->db->group_by("diario.id");
            $this->db->where("diario_tag_rif.tag_id",$args["tag"]->id);
        endif;
        if (isset($args["anno"]) && $args["anno"]) :
            $this->db->where("YEAR(diario.data)",$args["anno"]);
        endif;
        if (isset($args["mese"]) && $args["mese"]) :
            $this->db->where("MONTH(diario.data)",$args["mese"]);
        endif;
        $this->db->join("diario_categorie","diario_categorie.id = diario.categoria_id");
        return $this->db->count_all_results(); }

Goodluck!


0 commentaires

0
votes

Cela signifie que vos deux tables de jointure ont des colonnes avec le même nom id . Tout ce que vous avez à faire est d'utiliser un alias pour ces colonnes et un nom séparé comme

function get_num_post($args = array()) {
//put all columns required 
$this->db->select('diario.id dId,diario_tag_rif.id diId,diario_categorie.id dicId');
$this->db->from("diario");
//.....


0 commentaires

0
votes

Vous devez d'abord vous inscrire avant d'utiliser where et vous pouvez utiliser la clause group by after where.


0 commentaires