Jointure - Foreach PHP

Par GeoffreyB, il y a 4 ans


Base de données MySQL

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

Luc-A, il y a 4 ans

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 ?