ProjetsTable.php
4.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
/*
* (EP202009)
* Fichier autogénéré avec la commande :
* $ bin/cake bake model Projets
* après avoir créé manuellement la table projets avec phpmyadmin
*/
namespace App\Model\Table;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
/**
* Projets Model
*
* @property \App\Model\Table\GroupesThematiquesTable|\Cake\ORM\Association\BelongsTo $GroupesThematiques
* @property \App\Model\Table\MaterielsTable|\Cake\ORM\Association\HasMany $Materiels
*
* @method \App\Model\Entity\Projet get($primaryKey, $options = [])
* @method \App\Model\Entity\Projet newEntity($data = null, array $options = [])
* @method \App\Model\Entity\Projet[] newEntities(array $data, array $options = [])
* @method \App\Model\Entity\Projet|bool save(\Cake\Datasource\EntityInterface $entity, $options = [])
* @method \App\Model\Entity\Projet saveOrFail(\Cake\Datasource\EntityInterface $entity, $options = [])
* @method \App\Model\Entity\Projet patchEntity(\Cake\Datasource\EntityInterface $entity, array $data, array $options = [])
* @method \App\Model\Entity\Projet[] patchEntities($entities, array $data, array $options = [])
* @method \App\Model\Entity\Projet findOrCreate($search, callable $callback = null, $options = [])
*/
class ProjetsTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('projets');
$this->setPrimaryKey('id');
//$this->setDisplayField('id');
$this->setDisplayField('nom');
// https://book.cakephp.org/3/fr/orm/associations.html#associations-belongsto
/*
$this->belongsTo('GroupesThematiques', [
'foreignKey' => 'groupes_thematique_id'
]);
*/
$this->belongsTo('GroupesThematiques')
->setForeignKey('groupes_thematique_id')
/*
* Nom de la colonne dans l’autre table, qui sera utilisée pour correspondre à la foreignKey,
* par défaut, la clé primaire (colonne id).
*/
->setBindingKey('id')
/*
* propertyName: nom de la propriété qui devra être remplie avec les données de la table associée
* dans les résultats de la table source.
* Par défaut il s’agit du nom singulier avec des underscores de l’association.
*/
->setProperty('groupe_thematique');
/*
$this->belongsTo('Users', [
'foreignKey' => 'chef_science_id'
]);
$this->belongsTo('Users', [
'foreignKey' => 'chef_projet_id'
]);
*/
$this->belongsTo('Pis', [
'className' => 'Users',
'foreignKey' => 'chef_science_id',
'propertyName' => 'Pi'
]);
$this->belongsTo('Pms', [
'className' => 'Users',
'foreignKey' => 'chef_projet_id',
'propertyName' => 'Pm'
]);
$this->hasMany('Materiels', [
'foreignKey' => 'projet_id'
]);
}
/**
* Default validation rules.
*
* @param \Cake\Validation\Validator $validator Validator instance.
* @return \Cake\Validation\Validator
*/
public function validationDefault(Validator $validator)
{
$validator
->integer('id')
->allowEmptyString('id', 'create');
$validator
->scalar('nom')
->maxLength('nom', 45)
->requirePresence('nom', 'create')
->allowEmptyString('nom', false)
->add('nom', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']);
$validator
->scalar('description')
->allowEmptyString('description');
$validator
// Cakephp default (ymd)
//->date('date_start')
->allowEmptyDate('date_start');
$validator
// Cakephp default (ymd)
//->date('date_stop')
->allowEmptyDate('date_stop');
return $validator;
}
/**
* Returns a rules checker object that will be used for validating
* application integrity.
*
* @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
* @return \Cake\ORM\RulesChecker
*/
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->isUnique(['nom']));
$rules->add($rules->existsIn(['groupes_thematique_id'], 'GroupesThematiques'));
//$rules->add($rules->existsIn(['chef_science_id'], 'Users'));
$rules->add($rules->existsIn(['chef_science_id'], 'Pis'));
$rules->add($rules->existsIn(['chef_projet_id'], 'Pms'));
return $rules;
}
}