22 public static function remove($instance) {
25 return self::removeByKey_($tableName, $keyAndValues);
36 $statement=self::$db->prepareStatement($sql);
37 foreach ( $keyAndValues as $key => $value ) {
38 self::$db->bindValueFromStatement($statement, $key, $value);
41 return $statement->execute();
49 private static function remove_($tableName,$where){
52 $statement=self::$db->prepareStatement($sql);
53 return $statement->execute();
61 public static function delete($modelName,$ids){
68 return self::remove_($tableName, $where);
76 public static function insert($instance, $insertMany=
false) {
82 Logger::log(
"Key and values", json_encode($keyAndValues));
83 $statement=self::$db->prepareStatement($sql);
84 foreach ( $keyAndValues as $key => $value ) {
85 self::$db->bindValueFromStatement($statement, $key, $value);
87 $result=$statement->execute();
90 $instance->$accesseurId(self::$db->lastInserId());
92 self::insertOrUpdateAllManyToMany($instance);
104 if ($members !==
false) {
105 $members=\array_keys($members);
106 foreach ( $members as $member ) {
107 self::insertOrUpdateManyToMany($instance, $member);
119 if ($parser->init()) {
120 $myField=$parser->getMyFkField();
121 $field=$parser->getFkField();
122 $sql=
"INSERT INTO `" . $parser->getJoinTable() .
"`(`" . $myField .
"`,`" . $field .
"`) VALUES (:" . $myField .
",:" . $field .
");";
123 $memberAccessor=
"get" . ucfirst($member);
124 $memberValues=$instance->$memberAccessor();
125 $myKey=$parser->getMyPk();
126 $myAccessorId=
"get" . ucfirst($myKey);
127 $accessorId=
"get" . ucfirst($parser->getPk());
128 $id=$instance->$myAccessorId();
129 if (!is_null($memberValues)) {
130 self::$db->execute(
"DELETE FROM `" . $parser->getJoinTable() .
"` WHERE `" . $myField .
"`='" . $id .
"'");
131 $statement=self::$db->prepareStatement($sql);
132 foreach ( $memberValues as $targetInstance ) {
133 $foreignId=$targetInstance->$accessorId();
134 $foreignInstances=self::getAll($parser->getTargetEntity(),
"`" . $parser->getPk() .
"`" .
"='" . $foreignId .
"'");
135 if (!
OrmUtils::exists($targetInstance, $parser->getPk(), $foreignInstances)) {
136 self::insert($targetInstance,
false);
137 $foreignId=$targetInstance->$accessorId();
138 Logger::log(
"InsertMany",
"Insertion d'une instance de " . get_class($instance));
140 self::$db->bindValueFromStatement($statement, $myField, $id);
141 self::$db->bindValueFromStatement($statement, $field, $foreignId);
142 $statement->execute();
143 Logger::log(
"InsertMany",
"Insertion des valeurs dans la table association '" . $parser->getJoinTable() .
"'");
155 public static function update($instance, $updateMany=
false) {
162 Logger::log(
"Key and values", json_encode($ColumnskeyAndValues));
163 $statement=self::$db->prepareStatement($sql);
164 foreach ( $ColumnskeyAndValues as $key => $value ) {
165 self::$db->bindValueFromStatement($statement, $key, $value);
167 $result=$statement->execute();
168 if ($result && $updateMany)
169 self::insertOrUpdateAllManyToMany($instance);
178 public static function save($instance, $updateMany=
false) {
179 if(isset($instance->_rest)){
180 return self::update($instance,$updateMany);
182 return self::insert($instance,$updateMany);
static getManyToOneMembersAndValues($instance)
static checkWhere($condition)
static getUpdateFieldsKeyAndValues($keyAndValues)
static getAnnotationInfo($class, $keyAnnotation)
Trait for DAO Updates (Create, Update, Delete)
static getWhere($keyAndValues)
static getMultiWhere($values, $field)
static getInsertFields($keyAndValues)
static removeByKey_($tableName, $keyAndValues)
static save($instance, $updateMany=false)
static insertOrUpdateManyToMany($instance, $member)
Updates the $member member of $instance annotated by a ManyToMany.
static getFirstKey($class)
static getPropertiesAndValues($instance, $props=NULL)
static getKeyFieldsAndValues($instance)
static exists($instance, $memberKey, $array)
static log($id, $message, $code=0)
static getTableName($class)
static insertOrUpdateAllManyToMany($instance)
Met à jour les membres de $instance annotés par un ManyToMany.
static remove_($tableName, $where)
static getInsertFieldsValues($keyAndValues)
static update($instance, $updateMany=false)
Updates an existing $instance in the database.
static insert($instance, $insertMany=false)
Inserts a new instance $ instance into the database.