0

Je travaille actuellement sur une galerie utilisant CakePHP. C'est la première fois que j'utilise une base de données relationnelle avec Cake et j'ai une question à ce sujet.Cakephp - Ajouter des données à la base de données relationnelle

Dans ma galerie, qui est pour l'instant très simple (Comme il est conçu comme une expérience d'apprentissage qui pourrait conduire à un produit final), j'ai un seul jeu de relation:

D'abord, il y a deux modèles: Album et Image. Un album est lié à une image par une relation HasMany et une image appartient à un album (par une relation BelongsTo). J'ai mis en place la relation de base de données sur cakePHP sans problèmes.

Juste au cas où, voici les définitions pour les deux classes en php:

de l'album:

<?php 

class Album extends AppModel { 
    public $name = 'Album'; 

    public $hasMany = array(
     'Image' => array(
      'className' => 'Image', 
      'order' => 'Image.added DESC', 
      'dependent' => true 
     ) 
    ); 

    public $validate = array(
     'name' => array(
      'rule' => 'notEmpty' 
     ), 
     'description' => array(
     ) 
    ); 

} 

?> 

pour l'image:

<?php 

class Image extends AppModel { 
    public $name = 'Image'; 

    public $belongsTo = 'Album'; 


} 

?> 

La classe image n'a toujours pas de validation parce que je Je commence à travailler avec. Maintenant, je peux ajouter des albums très facilement avec une fonction simple dans la page de commande:

public function add() { 
    if ($this->request->is('post')) { 
     $this->Album->create(); 
     if ($this->Album->save($this->request->data)) { 
      $this->Session->setFlash('Your album has been created.'); 
      $this->redirect(array('action' => 'index')); 
     } else { 
      $this->Session->setFlash('Unable to create your album.'); 
     } 
    } 
} 

En plus d'une simple fonction dans le fichier de vue de la fonction add:

<?php 

echo $this->Form->create('Album'); 
echo $this->Form->input('name'); 
echo $this->Form->input('description'); 

echo $this->Form->end('Save Album'); 
?> 

Cependant, je ne indice comment ajouter des images. Bien sûr, je pourrais utiliser un code comme celui de l'album, mais comment est-ce que je définis exactement l'album auquel appartient l'image? J'ai recherché et trouvé des tonnes de questions sur la façon de créer une relation, mais aucune sur la façon d'ajouter réellement des données relationnelles à une base de données déjà installée. Toute aide avec ça?

Notez que je demande spécifiquement comment mettre les données dans la base de données en suivant le modèle relationnel. Je sais déjà comment gérer les images elles-mêmes avec cakephp, c'est l'ensemble des données relationnelles que je me pose :) :)

Merci d'avance!

+0

Je ne comprends pas vraiment ce que vous ne comprenez pas: Avez-vous lu http://book.cakephp.org/2.0/fr/models/saving-your-data.html? – ndm

+0

Puisque vous apprenez, faites-vous plaisir et lancez CAKE BAKE pour générer automatiquement certains contrôleurs, vues et modèles. Il va créer le code pour vous d'analyser et de comprendre. – AgRizzo

+0

Eh bien, ma question est simple: Maintenant que j'ai la relation définie et que je peux ajouter des albums, comment puis-je ajouter des images qui, à leur tour, sont liées à un album? Je veux dire, comment puis-je générer l'élément de formulaire qui permet à l'utilisateur de choisir un album parmi tous, ou alternativement comment puis-je passer la variable d'album? – Tizzy

Répondre

1

pour créer une sélection:

dans votre ImagesController

public function add() { 
    // 
    // ... 
    // 
    $albums = $this->Image->Album->find('list'); 
    $this->set('albums', $albums); 
} 

quelque part dans votre fichier de vue add.ctp

echo $this->Form->input('album_id'); 
+0

Merci! Cela l'a fait :) – Tizzy

Questions connexes