La table "Builder"

| buc_id - buc_alimentation - buc_ram

1 - 1 - 2

La table "equipment_item"

ei_id --- ei_name --- ei_category

| 1 --- Intel Core i7 --- 2 |

La table "equipment_category"

ec_id --- ec_name

1 --- Processeur
2 --- Carte mère

Requête utilisé dans le Model :

public function select_item_for_user($bs_id){
        $this->db->select('*');
        $this->db->from("builder AS build");
        $this->db->where('buc_builder',$bs_id);
        $this->db->join('equipment AS alimentation', 'build.buc_alimentation = alimentation.ei_id');
        $this->db->join('equipment AS ram', 'build.buc_ram = ram.ei_id');
        return $this->db->get()->result();
    }

Contrôlleur :

$data['item_category'] = $this->builder_model->select_category_item();
                $data['equipment_items'] = $this->builder_model->select_item();
                $data['items_config'] = $this->builder_model->select_item_for_user($bs_id);

View :

<?php foreach($item_category as $category): ?>
    <div class="computer-assembly">
        <div class="computer-assembly__header">
            <?= $category->ec_img ?>
            <div class="computer-assembly__title">
                <?= $category->ec_name ?>
            </div>
            <a href="#" type="button" class="computer-assembly__add stretched-link" data-bs-toggle="modal"
                data-bs-target="#modal_category<?= $category->ec_id ?>"><i class="fas fa-plus"></i></a>
        </div>
        <div class="computer-assembly__body">
            <?php foreach($items_config as $builder): ?>
            <div class="computer-assembly__item">
                <img src="<?= img_url('components/'.$builder->ei_img) ?>">
                <div class="computer-assembly__info">
                    <div class="computer-assembly__title-item">
                        <?= $builder->ei_name ?>
                    </div>
                    <a href="" class="computer-assembly__more">Fiche technique</a>
                </div>
                <ul class="computer-assembly__menu">
                    <?php if(!empty($builder->ei_info)): ?>
                    <li>
                        <button data-bs-toggle="modal" data-bs-target="#modal_info_item<?= $builder->ei_id ?>" class="computer-assembly__info-btn"><i class="fas fa-info-circle"></i></button>
                    </li>
                    <?php endif; ?>
                    <li>
                        <button class="computer-assembly__edit" data-bs-toggle="modal" data-bs-target="#modal_category<?= $category->ec_id ?>"><i class="fas fa-pen"></i></button>
                    </li>
                    <li>
                        <button class="computer-assembly__delete"><i class="fas fa-times"></i></button>
                    </li>
                </ul>
            </div>

            <?php endforeach; ?>
        </div>
    </div>

Ce que je veux

Je voudrais que pour chaque catégorie, l'équipement y soit associé.
Exemple : l'équipement "Intel Core i7" dans la catégorie Carte mère.

Le problème, c'est que je n'arrive pas à différencier la RAM avec l'alimentation dans mon foreach.

Je voudrais savoir si je m'y prends de la bonne manière ? Comment obtenir une jointure de chaque élément sur une même table et de tout afficher dans un foreach ?

Ce que j'obtiens

Hors, avec mes requêtes, j'obtiens une seule ligne identique sur chaque catégorie.

N'hésitez pas à me poser des questions si je n'ai pas été assez claire
Merci d'avance pour votre aide.

1 réponse


Bonjour GeoffreyB,

Je ne suis pas sûr de comprendre, mais je pense qu'il faut faire une requête par caractéristique.

Attention à ton type de jointure : est-ce Inner, left ou right ?