CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[POO] Liaison entre table

Fire_Storm
Fire_Storm
Niveau 10
15 juin 2012 à 15:41:29

Salut, après avoir suivi le tuto sur le SDZ (oui je sais le SDZ encore xD) concernant la POO et surtout la dernière partie (intégrant le système MVC) j'utilise donc cette manière là pour bosser.

Il me reste cependant un soucis que je n'arrive pas à résoudre;

Les tables peuvent être manipulées par ce qu'on apelle un manager, le manager à également une "entité" qui en gros permet d'accéder au attribut, le manger ne s'occupant que de gérer les actions avec la base de données.

Mon soucis c'est que j'ai une liste de mots-clés, mot-clé qui amène sur une page précise d'un service que nous proposons, bref une bête relation simple.

Seulement voilà mon entité Keyword permet d'accéder aux attribut de Keyword, pas de l'entité Service.

On m'a proposé comme solution de rajouter un attribut à l'entité Keyword qui serait une instance de l'entité à laquelle il est lié (donc ici Service):

Un peu de code pour mieux comprendre:

Keyword.class.php: http://pastebin.com/08DTYaaz
KeywordManager.class.php: http://pastebin.com/xFUZwz6k

Bref, comment est ce que je peux à partir d'un objet Keyword, récupérer le nom du service (pour ceux qui n'aurait pas piger un exemple plus facile bah c'est récupérer le nom de la catégorie à laquelle une news est liée).

Et après je vous ferais encore chier pour la même chose mais par exemple en admettant qu'une news peut être liée à plusieurs catégories. ^^

Merci d'avance.

deepblue
deepblue
Niveau 16
15 juin 2012 à 21:15:11

protected $service; doit être une instance de Service (ou un truc null).

Pour la récupération, c'est à l'instanciation de Keyword que tu vas faire le nécessaire pour le setter son service s'il en a un.

Fire_Storm
Fire_Storm
Niveau 10
16 juin 2012 à 13:13:59

Oui il a un setter.

public function setService(Service $service)
{
$this->service = $service;
}

Et pour mon instanciation de Keyword je n'ai que ça:

while($keyword = $rs->fetch(PDO::FETCH_ASSOC))
{
$list[] = new Keyword($keyword);
}

Donc je suppose que c'est à cette ligne que je dois faire quelque chose mais quoi, un truc du genre $list['service'] = new Service($keyword); ?

deepblue
deepblue
Niveau 16
16 juin 2012 à 13:51:12

Par exemple oui (même si le constructeur de Service prend un paramètre qui me paraît étrange).

Fire_Storm
Fire_Storm
Niveau 10
16 juin 2012 à 14:54:26

Quel paramètre ?

Fire_Storm
Fire_Storm
Niveau 10
16 juin 2012 à 14:54:57

Bah c'est le tableau contenant toutes les infos quoi, et qui se charge de setter les attributs.

deepblue
deepblue
Niveau 16
16 juin 2012 à 16:22:59

new Service($keyword); -> new Service($service); non ?

Bon osef, le principe est là ^^

Fire_Storm
Fire_Storm
Niveau 10
16 juin 2012 à 17:03:23

Oui mais l'array est bien stocké dans $keyword

:d) while($keyword = $rs->fetch(PDO::FETCH_ASSOC))

deepblue
deepblue
Niveau 16
16 juin 2012 à 18:26:27

Attends, j'ai loupé un truc dans ton post.

while($keyword = $rs->fetch(PDO::FETCH_ASSOC))
{
$Keyword = new Keyword($keyword);
$Keyword->setService( ServiceManager::retrouverServicePasId( $Keyword->getServiceId()));
$list[] = $Keyword;
}

OU dans la class Keyword :

public function __construct($datas) {
parent::__construct($datas);
if($this->getServiceId()) {
$this->setService( ServiceManager::retrouverServicePasId( $Keyword->getServiceId()));
}
}

C'est ça que tu devrais faire (tout du moins l'idée).

(wall du code que j'ai écris ici : http://wall.deblan.fr/xd1/html/1/ )

deepblue
deepblue
Niveau 16
16 juin 2012 à 18:26:57

retrouverServicePasId -> retrouverServiceParId (évidement c'est à adapter, je ne connais pas le reste du code)

Fire_Storm
Fire_Storm
Niveau 10
17 juin 2012 à 11:33:01

Donc je dois implémenter une fonction dans mon entité Keyword, qui va aller chercher le bon service avec l'id ?

Mais c'est pas un peu la merde ça ? xD Enfin je veyx dire imagine que tu aies une ou 2 tables liées, tu vas te retrouver avec plein de méthode qui vont aller chercher dans ces tables là alors que pour moi logiquement ça n'a rien a faire là. Ou bien j'ai rien compris à la façon de penser objet... xD

deepblue
deepblue
Niveau 16
17 juin 2012 à 13:41:10

Si tu as un festival. Ce festival contient des spectacles. Un spectacle a des représentations. Tu veux pouvoir faire ça :

foreach($festival->getSpectacles() as $spectacle) {
echo $spectable->getNom();
foreach($spectacle->getRepresentations() as $representation) {
echo $representation->getHoraire();
}
}

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment