Browse Source

Make better use of local variable.

Call target() fewer times when marshalling belongsToMany associations.

Refs #6867
Mark Story 10 years ago
parent
commit
eb4a7b62d8
1 changed files with 4 additions and 5 deletions
  1. 4 5
      src/ORM/Marshaller.php

+ 4 - 5
src/ORM/Marshaller.php

@@ -283,11 +283,10 @@ class Marshaller
         }
         $data = array_values($data);
 
-        $primaryKey = array_flip($assoc->target()->schema()->primaryKey());
-        $records = [];
-        $conditions = [];
-        $primaryCount = count($primaryKey);
         $target = $assoc->target();
+        $primaryKey = array_flip($target->schema()->primaryKey());
+        $records = $conditions = [];
+        $primaryCount = count($primaryKey);
 
         foreach ($data as $i => $row) {
             if (!is_array($row)) {
@@ -306,7 +305,7 @@ class Marshaller
         }
 
         if (!empty($conditions)) {
-            $query = $assoc->target()->find();
+            $query = $target->find();
             $query->andWhere(function ($exp) use ($conditions) {
                 return $exp->or_($conditions);
             });