Cakephp

Model Association in Cake PHP

Model Association in Cake PHP


Model Association in Cake PHP

There have four types of association in CakePHP are: hasOne, hasMany, belongsTo, and hasAndBelongsToMany (HABTM)

Has One:
It is one to one relationship. For Ex. A user has one profile.

      class User extends AppModel {
                public $hasOne = array(
                       'Profile' => array(
                                   'className' => 'Profile',
                                   'foreignKey' => 'user_id',
                                    'dependent' => true
                                   )
                                );
                    }

Has Many:
It is one to many relationship. For Ex. A students can have multiple subjects.

   class Student extends AppModel {
               public $hasMany = array(
                      'Subject' => array(
                                'className' => 'Subject',
                                'foreignKey' => 'student_id',
                                'dependent' => true
                                 )
                              );
                    }

Belongs To:
It is many to one relationship. For Ex. Many subjects belong to a student.

    class Subject extends AppModel {
               public $belongsTo = array(
                     'Student' => array(
                           'className' => 'Student',
                           'foreignKey' => 'student_id'
                                   )
                         );
                  }

Has and Belongs To Many:
It is many to many relationship. For Ex. Subjects have, and belong to many chapters.

    class Subject extends AppModel {
                public $hasMany = array(
                             'Chapter' => array(
                                   'className' => 'Chapter',
                                   )
                             );
                public $hasAndBelongsToMany = array(
                          'ChapterName' => array(
                                        'className' => 'ChapterName',
                                         'joinTable' => 'Chapter',
                                         'foreignKey' => 'student_id',
                                         'associationForeignKey' => 'chapter_id',
                                          'fields'=>''
                                           )
                                       );
                                 }

Published: 30th April 2020 by Gabriel Kolbe

Adverts