25 public static function remove($instance) {
28 return self::removeByKey_ ( $tableName, $keyAndValues );
40 $statement = self::$db->prepareStatement ( $sql );
41 foreach ( $keyAndValues as $key => $value ) {
42 self::$db->bindValueFromStatement ( $statement, $key, $value );
45 return $statement->execute ();
54 private static function remove_($tableName, $where) {
57 $statement = self::$db->prepareStatement ( $sql );
58 return $statement->execute ();
67 public static function delete($modelName, $ids) {
70 if (! \is_array ( $ids )) {
74 return self::remove_ ( $tableName, $where );
85 public static function insert($instance, $insertMany =
false) {
91 Logger::log (
"Key and values", json_encode ( $keyAndValues ) );
92 $statement = self::$db->prepareStatement ( $sql );
93 foreach ( $keyAndValues as $key => $value ) {
94 self::$db->bindValueFromStatement ( $statement, $key, $value );
96 $result = $statement->execute ();
99 $instance->$accesseurId ( self::$db->lastInserId () );
101 self::insertOrUpdateAllManyToMany ( $instance );
114 if ($members !==
false) {
115 $members = \array_keys ( $members );
116 foreach ( $members as $member ) {
117 self::insertOrUpdateManyToMany ( $instance, $member );
130 if ($parser->init ()) {
131 $myField = $parser->getMyFkField ();
132 $field = $parser->getFkField ();
133 $sql =
"INSERT INTO `" . $parser->getJoinTable () .
"`(`" . $myField .
"`,`" . $field .
"`) VALUES (:" . $myField .
",:" . $field .
");";
134 $memberAccessor =
"get" . ucfirst ( $member );
135 $memberValues = $instance->$memberAccessor ();
136 $myKey = $parser->getMyPk ();
137 $myAccessorId =
"get" . ucfirst ( $myKey );
138 $accessorId =
"get" . ucfirst ( $parser->getPk () );
139 $id = $instance->$myAccessorId ();
140 if (! is_null ( $memberValues )) {
141 self::$db->execute (
"DELETE FROM `" . $parser->getJoinTable () .
"` WHERE `" . $myField .
"`='" . $id .
"'" );
142 $statement = self::$db->prepareStatement ( $sql );
143 foreach ( $memberValues as $targetInstance ) {
144 $foreignId = $targetInstance->$accessorId ();
145 $foreignInstances = self::getAll ( $parser->getTargetEntity (),
"`" . $parser->getPk () .
"`" .
"='" . $foreignId .
"'" );
146 if (!
OrmUtils::exists ( $targetInstance, $parser->getPk (), $foreignInstances )) {
147 self::insert ( $targetInstance,
false );
148 $foreignId = $targetInstance->$accessorId ();
149 Logger::log (
"InsertMany",
"Insertion d'une instance de " . get_class ( $instance ) );
151 self::$db->bindValueFromStatement ( $statement, $myField, $id );
152 self::$db->bindValueFromStatement ( $statement, $field, $foreignId );
153 $statement->execute ();
154 Logger::log (
"InsertMany",
"Insertion des valeurs dans la table association '" . $parser->getJoinTable () .
"'" );
169 public static function update($instance, $updateMany =
false) {
176 Logger::log (
"Key and values", json_encode ( $ColumnskeyAndValues ) );
177 $statement = self::$db->prepareStatement ( $sql );
178 foreach ( $ColumnskeyAndValues as $key => $value ) {
179 self::$db->bindValueFromStatement ( $statement, $key, $value );
181 $result = $statement->execute ();
182 if ($result && $updateMany)
183 self::insertOrUpdateAllManyToMany ( $instance );
193 public static function save($instance, $updateMany =
false) {
194 if (isset ( $instance->_rest )) {
195 return self::update ( $instance, $updateMany );
197 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.