@@ -115,6 +115,9 @@ public function postFlush(PostFlushEventArgs $eventArgs): void
115
115
continue ;
116
116
}
117
117
118
+ $ sql = 'UPDATE ' .$ this ->config ->getTableName ($ meta ).' ' ;
119
+ $ params = $ types = [];
120
+
118
121
foreach ($ updateData [$ meta ->table ['name ' ]] as $ column => $ value ) {
119
122
$ field = $ meta ->getFieldName ($ column );
120
123
$ fieldName = $ meta ->getFieldForColumn ($ column );
@@ -128,13 +131,15 @@ public function postFlush(PostFlushEventArgs $eventArgs): void
128
131
}
129
132
}
130
133
131
- $ sql = 'UPDATE ' .$ this ->config ->getTableName ($ meta ).' ' .
132
- 'SET ' .$ field .' = ' .$ placeholder .' ' .
133
- 'WHERE ' .$ this ->config ->getRevisionFieldName ().' = ? ' ;
134
+ if ($ column === array_key_first ($ updateData [$ meta ->table ['name ' ]])) {
135
+ $ sql .= 'SET ' ;
136
+ } else {
137
+ $ sql = trim ($ sql ).', ' ;
138
+ }
134
139
135
- $ params = [ $ value , $ this -> getRevisionId ( $ conn )] ;
140
+ $ sql .= $ field . ' = ' . $ placeholder . ' ' ;
136
141
137
- $ types = [] ;
142
+ $ params [] = $ value ;
138
143
139
144
if (\array_key_exists ($ column , $ meta ->fieldNames )) {
140
145
$ types [] = $ meta ->getTypeOfField ($ fieldName );
@@ -161,29 +166,31 @@ public function postFlush(PostFlushEventArgs $eventArgs): void
161
166
162
167
$ types [] = $ type ;
163
168
}
169
+ }
164
170
165
- $ types [] = $ this ->config ->getRevisionIdFieldType ();
166
-
167
- foreach ($ meta ->identifier as $ idField ) {
168
- if (isset ($ meta ->fieldMappings [$ idField ])) {
169
- $ columnName = $ meta ->fieldMappings [$ idField ]['columnName ' ];
170
- $ types [] = $ meta ->fieldMappings [$ idField ]['type ' ];
171
- } elseif (isset ($ meta ->associationMappings [$ idField ]['joinColumns ' ])) {
172
- $ columnName = $ meta ->associationMappings [$ idField ]['joinColumns ' ][0 ]['name ' ];
173
- $ types [] = $ meta ->associationMappings [$ idField ]['type ' ];
174
- } else {
175
- throw new \RuntimeException ('column name not found for ' .$ idField );
176
- }
177
-
178
- $ reflField = $ meta ->reflFields [$ idField ];
179
- \assert (null !== $ reflField );
180
- $ params [] = $ reflField ->getValue ($ entity );
181
-
182
- $ sql .= ' AND ' .$ columnName .' = ? ' ;
171
+ $ sql .= 'WHERE ' .$ this ->config ->getRevisionFieldName ().' = ? ' ;
172
+ $ params [] = $ this ->getRevisionId ($ conn );
173
+ $ types [] = $ this ->config ->getRevisionIdFieldType ();
174
+
175
+ foreach ($ meta ->identifier as $ idField ) {
176
+ if (isset ($ meta ->fieldMappings [$ idField ])) {
177
+ $ columnName = $ meta ->fieldMappings [$ idField ]['columnName ' ];
178
+ $ types [] = $ meta ->fieldMappings [$ idField ]['type ' ];
179
+ } elseif (isset ($ meta ->associationMappings [$ idField ]['joinColumns ' ])) {
180
+ $ columnName = $ meta ->associationMappings [$ idField ]['joinColumns ' ][0 ]['name ' ];
181
+ $ types [] = $ meta ->associationMappings [$ idField ]['type ' ];
182
+ } else {
183
+ throw new \RuntimeException ('column name not found for ' .$ idField );
183
184
}
184
185
185
- $ em ->getConnection ()->executeQuery ($ sql , $ params , $ types );
186
+ $ reflField = $ meta ->reflFields [$ idField ];
187
+ \assert (null !== $ reflField );
188
+ $ params [] = $ reflField ->getValue ($ entity );
189
+
190
+ $ sql .= ' AND ' .$ columnName .' = ? ' ;
186
191
}
192
+
193
+ $ em ->getConnection ()->executeQuery ($ sql , $ params , $ types );
187
194
}
188
195
189
196
foreach ($ this ->deferredChangedManyToManyEntityRevisionsToPersist as $ deferredChangedManyToManyEntityRevisionToPersist ) {
0 commit comments