Bonjour à tous,
Je n'arrive pas refaire des liens entre 3 tables.

J'ai une table
users
qui a des champs
id, name, email

J'ai une table
pages
qui a aussi des champs
id, name,content,date

Je viens de créer un controller BlogsController avec un model et des vues ainsi qu'une table blogs
Dans cette table blogs, j'ai créé des champs
id, name, content, page_id, user_id, created, published

et dans mon modèle blogs.php, j'ai ajouté un belongsTo

<?php
class Blog extends AppModel{

    public $belongsTo = array(
        'Page' => array(
            'className' => 'Page',
            'conditions' => array('Page.online' => '1'),
            'order' => 'Page.created DESC'
        )
    );

    // Règle de validation
    public $validate = array(
        'name'  => array(
            'rule'      =>'notEmpty',
            'allowEmpty'=> false,
            'message'   => "Le nom est ogligatoire"
            ),
        'content'   => array(
            'rule'      =>'notEmpty',
            'allowEmpty'=> false,
            'message'   => "Le text est ogligatoire"
            )
    );

}

Ce que je souhaiterais aussi c'est que mon champs de mon formulaire, affiche un menu déroulant de toutes mes pages active. Esc-e que pourcela je dois absolument faire un $this->loadModel('Page'); dans l'action memeber_edit de mon controller BlogsController. Ou ne devrais-je pas faire un truc du genre BelongsTo??? ou hasMany??

N'auriez-vous pas un exemple à me donner de BelongsTo? ou hasMany?

En gros plusieurs post peuvent appartenir à une page. Mais j'aimerais que mon champs page_id affiche un menu déroulant avec toutes les pages qui sont dont le champe 'active' est a true

Milles mercis pour votre aide

1 réponse


Bonjour.

En gros plusieurs post peuvent appartenir à une page.

Tu nous parle des tables users, pages et blogs, mais pas d'une table posts.

Mais j'aimerais que mon champs page_id affiche un menu déroulant avec toutes les pages qui sont dont le champe 'active' est a true

Il te suffit de faire un find('list') sur ta table pages avec une condition sur le champ active.

$pages = $this->Page->find('list', array(
    'conditions' => array(
        'active' => 1
        )
     )
);