Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Refactoring Model::__validateWithModels. Should be slightly faster as…

… loops are smaller.
  • Loading branch information...
commit 4ac29963a880b5470860291b1dfebcdaed130729 1 parent a490e24
@markstory markstory authored
Showing with 21 additions and 18 deletions.
  1. +21 −18 cake/libs/model/model.php
View
39 cake/libs/model/model.php
@@ -2513,26 +2513,29 @@ function invalidFields($options = array()) {
*/
function __validateWithModels($options) {
$valid = true;
- foreach ($this->data as $assoc => $data) {
- if (isset($this->hasAndBelongsToMany[$assoc]) && !empty($this->hasAndBelongsToMany[$assoc]['with'])) {
- list($join) = $this->joinModel($this->hasAndBelongsToMany[$assoc]['with']);
- $newData = array();
- foreach ((array)$data as $row) {
- if (isset($row[$this->hasAndBelongsToMany[$assoc]['associationForeignKey']])) {
- $newData[] = $row;
- } elseif (isset($row[$join]) && isset($row[$join][$this->hasAndBelongsToMany[$assoc]['associationForeignKey']])) {
- $newData[] = $row[$join];
- }
- }
- if (empty($newData)) {
- continue;
- }
- foreach ($newData as $data) {
- $data[$this->hasAndBelongsToMany[$assoc]['foreignKey']] = $this->id;
- $this->{$join}->create($data);
- $valid = ($valid && $this->{$join}->validates($options));
+ foreach ($this->hasAndBelongsToMany as $assoc => $association) {
+ if (empty($association['with']) || !isset($this->data[$assoc])) {
+ continue;
+ }
+ list($join) = $this->joinModel($this->hasAndBelongsToMany[$assoc]['with']);
+ $data = $this->data[$assoc];
+
+ $newData = array();
+ foreach ((array)$data as $row) {
+ if (isset($row[$this->hasAndBelongsToMany[$assoc]['associationForeignKey']])) {
+ $newData[] = $row;
+ } elseif (isset($row[$join]) && isset($row[$join][$this->hasAndBelongsToMany[$assoc]['associationForeignKey']])) {
+ $newData[] = $row[$join];
}
}
+ if (empty($newData)) {
+ continue;
+ }
+ foreach ($newData as $data) {
+ $data[$this->hasAndBelongsToMany[$assoc]['foreignKey']] = $this->id;
+ $this->{$join}->create($data);
+ $valid = ($valid && $this->{$join}->validates($options));
+ }
}
return $valid;
}
Please sign in to comment.
Something went wrong with that request. Please try again.