19 if (!isset(self::$modelsMetadatas[$className])) {
22 return self::$modelsMetadatas[$className];
26 $ret=self::getAnnotationInfo($class,
"#notSerializable");
28 return \array_search($member, $ret) ===
false;
34 $ret=self::getAnnotationInfo($class,
"#nullable");
36 return \array_search($member, $ret) !==
false;
42 $ret=self::getAnnotationInfo($class,
"#fieldNames");
51 $fields=self::getAnnotationInfo($model,
"#fieldNames");
53 $serializables=self::getSerializableFields($model);
54 foreach ($fields as $member=>$field){
55 if(\array_search($member, $serializables)!==
false)
56 $result[$field]=$member;
62 if(isset(self::getModelMetadata($class)[
"#tableName"]))
63 return self::getModelMetadata($class)[
"#tableName"];
67 $kf=self::getAnnotationInfo(get_class($instance),
"#primaryKeys");
68 return self::getMembersAndValues($instance, $kf);
72 if(!\is_string($instance)){
73 $instance=\get_class($instance);
75 return self::getAnnotationInfo($instance,
"#primaryKeys");
79 $fieldNames=self::getAnnotationInfo($className,
"#fieldNames");
80 if ($fieldNames !==
false)
81 return \array_keys($fieldNames);
86 $fieldTypes=self::getAnnotationInfo($className,
"#fieldTypes");
87 if ($fieldTypes !==
false)
93 $types= self::getFieldTypes($className);
94 if(isset($types[$field]))
95 return $types[$field];
101 $className=get_class($instance);
102 if (is_null($members))
103 $members=self::getMembers($className);
104 foreach ( $members as $member ) {
107 if (self::isNotNullOrNullAccepted($v, $className, $member)) {
108 $name=self::getFieldName($className, $member);
122 $kf=self::getAnnotationInfo($class,
"#primaryKeys");
127 $fkv=self::getKeyFieldsAndValues($instance);
138 $class=get_class($instance);
139 $members=self::getAnnotationInfo($class,
"#manyToOne");
140 if ($members !==
false) {
141 foreach ( $members as $member ) {
142 $memberAccessor=
"get" . ucfirst($member);
143 if (method_exists($instance, $memberAccessor)) {
144 $memberInstance=$instance->$memberAccessor();
145 if (isset($memberInstance)) {
146 $keyValues=self::getKeyFieldsAndValues($memberInstance);
147 if (
sizeof($keyValues) > 0) {
148 $fkName=self::getJoinColumnName($class, $member);
149 $ret[$fkName]=reset($keyValues);
159 if (isset(self::getModelMetadata($class)[$annotation]))
160 return self::getModelMetadata($class)[$annotation];
171 public static function exists($instance, $memberKey, $array) {
172 $accessor=
"get" . ucfirst($memberKey);
173 if (method_exists($instance, $accessor)) {
174 if ($array !== null) {
175 foreach ( $array as $value ) {
176 if ($value->$accessor() == $instance->$accessor())
185 $annot=self::getAnnotationInfoMember($class,
"#joinColumn", $member);
186 if ($annot !==
false) {
187 $fkName=$annot[
"name"];
189 $fkName=
"id" . ucfirst(self::getTableName(ucfirst($member)));
195 if (isset(self::getModelMetadata($class)[$keyAnnotation]))
196 return self::getModelMetadata($class)[$keyAnnotation];
201 $info=self::getAnnotationInfo($class, $keyAnnotation);
202 if ($info !==
false) {
204 if (isset($info[$member])) {
205 return $info[$member];
208 if(\array_search($member, $info)!==
false){
217 $notSerializable=self::getAnnotationInfo($class,
"#notSerializable");
218 $fieldNames=\array_keys(self::getAnnotationInfo($class,
"#fieldNames"));
219 return \array_diff($fieldNames, $notSerializable);
224 if ($manyToOne=self::getAnnotationInfo($class,
"#manyToOne")) {
225 $result=\array_merge($result, $manyToOne);
227 if ($oneToMany=self::getAnnotationInfo($class,
"#oneToMany")) {
228 $result=\array_merge($result, \array_keys($oneToMany));
230 if ($manyToMany=self::getAnnotationInfo($class,
"#manyToMany")) {
231 $result=\array_merge($result, \array_keys($manyToMany));
237 return self::getAnnotationInfo($class,
"#manyToOne");
241 $result=self::getAnnotationInfo($class,
"#manyToMany");
243 return \array_keys($result);
248 return "id" . \ucfirst(self::getTableName($classname));
252 if(!isset($metaDatas)){
253 $class=get_class($instance);
254 $metaDatas=self::getModelMetadata($class);
256 $invertedJoinColumns=$metaDatas[
"#invertedJoinColumn"];
257 foreach ($invertedJoinColumns as $field=>$invertedJoinColumn){
258 if($invertedJoinColumn[
"member"]===$member){
259 return [$field,$invertedJoinColumn];
static getManyToOneMembersAndValues($instance)
static getMemberJoinColumns($instance, $member, $metaDatas=NULL)
static getFieldsInRelations($class)
static getMembers($className)
static getAnnotationInfo($class, $keyAnnotation)
static getDefaultFk($classname)
static getAnnotationInfoMember($class, $keyAnnotation, $member)
static isNotNullOrNullAccepted($v, $className, $member)
static getFieldType($className, $field)
Utilitaires de mappage Objet/relationnel.
static getFirstKey($class)
static getFirstKeyValue($instance)
static getKeyFieldsAndValues($instance)
static isNullable($class, $member)
static isSerializable($class, $member)
static isAssociative($array)
static exists($instance, $memberKey, $array)
static getMemberValue($instance, $member)
static getFieldTypes($className)
static getMembersAndValues($instance, $members=NULL)
static getFieldNames($model)
static getModelMetadata($className)
static getManyToManyFields($class)
static getJoinColumnName($class, $member)
static getTableName($class)
static getFieldName($class, $member)
static getManyToOneFields($class)
static getKeyFields($instance)
static getMembersWithAnnotation($class, $annotation)
static getSerializableFields($class)
static getOrmModelCache($classname)