20 if (!isset(self::$modelsMetadatas[$className])) {
23 return self::$modelsMetadatas[$className];
27 $ret=self::getAnnotationInfo($class,
"#notSerializable");
29 return \array_search($member, $ret) ===
false;
35 $ret=self::getAnnotationInfo($class,
"#nullable");
37 return \array_search($member, $ret) !==
false;
43 $ret=self::getAnnotationInfo($class,
"#fieldNames");
52 $fields=self::getAnnotationInfo($model,
"#fieldNames");
54 $serializables=self::getSerializableFields($model);
55 foreach ($fields as $member=>$field){
56 if(\array_search($member, $serializables)!==
false)
57 $result[$field]=$member;
63 if(isset(self::getModelMetadata($class)[
"#tableName"]))
64 return self::getModelMetadata($class)[
"#tableName"];
68 $kf=self::getAnnotationInfo(get_class($instance),
"#primaryKeys");
69 return self::getMembersAndValues($instance, $kf);
73 if(!\is_string($instance)){
74 $instance=\get_class($instance);
76 return self::getAnnotationInfo($instance,
"#primaryKeys");
80 $fieldNames=self::getAnnotationInfo($className,
"#fieldNames");
81 if ($fieldNames !==
false)
82 return \array_keys($fieldNames);
87 $fieldTypes=self::getAnnotationInfo($className,
"#fieldTypes");
88 if ($fieldTypes !==
false)
94 $types= self::getFieldTypes($className);
95 if(isset($types[$field]))
96 return $types[$field];
102 $className=get_class($instance);
103 if (is_null($members))
104 $members=self::getMembers($className);
105 foreach ( $members as $member ) {
108 if (self::isNotNullOrNullAccepted($v, $className, $member)) {
109 $name=self::getFieldName($className, $member);
123 $kf=self::getAnnotationInfo($class,
"#primaryKeys");
128 $fkv=self::getKeyFieldsAndValues($instance);
139 $class=get_class($instance);
140 $members=self::getAnnotationInfo($class,
"#manyToOne");
141 if ($members !==
false) {
142 foreach ( $members as $member ) {
143 $memberAccessor=
"get" . ucfirst($member);
144 if (method_exists($instance, $memberAccessor)) {
145 $memberInstance=$instance->$memberAccessor();
146 if (isset($memberInstance)) {
147 $keyValues=self::getKeyFieldsAndValues($memberInstance);
148 if (
sizeof($keyValues) > 0) {
149 $fkName=self::getJoinColumnName($class, $member);
150 $ret[$fkName]=reset($keyValues);
160 if (isset(self::getModelMetadata($class)[$annotation]))
161 return self::getModelMetadata($class)[$annotation];
172 public static function exists($instance, $memberKey, $array) {
173 $accessor=
"get" . ucfirst($memberKey);
174 if (method_exists($instance, $accessor)) {
175 if ($array !== null) {
176 foreach ( $array as $value ) {
177 if ($value->$accessor() == $instance->$accessor())
186 $annot=self::getAnnotationInfoMember($class,
"#joinColumn", $member);
187 if ($annot !==
false) {
188 $fkName=$annot[
"name"];
190 $fkName=
"id" . ucfirst(self::getTableName(ucfirst($member)));
196 if (isset(self::getModelMetadata($class)[$keyAnnotation]))
197 return self::getModelMetadata($class)[$keyAnnotation];
202 $info=self::getAnnotationInfo($class, $keyAnnotation);
203 if ($info !==
false) {
205 if (isset($info[$member])) {
206 return $info[$member];
209 if(\array_search($member, $info)!==
false){
218 $notSerializable=self::getAnnotationInfo($class,
"#notSerializable");
219 $fieldNames=\array_keys(self::getAnnotationInfo($class,
"#fieldNames"));
220 return \array_diff($fieldNames, $notSerializable);
225 if ($manyToOne=self::getAnnotationInfo($class,
"#manyToOne")) {
226 $result=\array_merge($result, $manyToOne);
228 if ($oneToMany=self::getAnnotationInfo($class,
"#oneToMany")) {
229 $result=\array_merge($result, \array_keys($oneToMany));
231 if ($manyToMany=self::getAnnotationInfo($class,
"#manyToMany")) {
232 $result=\array_merge($result, \array_keys($manyToMany));
238 return self::getAnnotationInfo($class,
"#manyToOne");
242 $result=self::getAnnotationInfo($class,
"#manyToMany");
244 return \array_keys($result);
249 return "id" . \ucfirst(self::getTableName($classname));
253 if(!isset($metaDatas)){
254 $class=get_class($instance);
255 $metaDatas=self::getModelMetadata($class);
257 $invertedJoinColumns=$metaDatas[
"#invertedJoinColumn"];
258 foreach ($invertedJoinColumns as $field=>$invertedJoinColumn){
259 if($invertedJoinColumn[
"member"]===$member){
260 return [$field,$invertedJoinColumn];
268 $datas=$formatter->cleanRestObject($instance);
269 return $formatter->format([
"pk"=>self::getFirstKeyValue($instance),
"object"=>$datas]);
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 objectAsJSON($instance)
static isAssociative($array)
Tests if array is associative.
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)