From 579bc8719f5dce962bb32cd91931799aba50fb1d Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 29 Mar 2012 17:13:13 -0500 Subject: [PATCH] cleaning up code. --- laravel/database/eloquent/query.php | 2 +- .../relationships/has_many_and_belongs_to.php | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/laravel/database/eloquent/query.php b/laravel/database/eloquent/query.php index c4367e96..87d9b05e 100644 --- a/laravel/database/eloquent/query.php +++ b/laravel/database/eloquent/query.php @@ -183,7 +183,7 @@ class Query { $query->table->where_nested($constraints); } - // Before matching the models, we will initialize the relationship + // Before matching the models, we will initialize the relationships // to either null for single-value relationships or an array for // the multi-value relationships as their baseline value. $query->initialize($results, $relationship); diff --git a/laravel/database/eloquent/relationships/has_many_and_belongs_to.php b/laravel/database/eloquent/relationships/has_many_and_belongs_to.php index 9667c099..e030ea72 100644 --- a/laravel/database/eloquent/relationships/has_many_and_belongs_to.php +++ b/laravel/database/eloquent/relationships/has_many_and_belongs_to.php @@ -239,7 +239,7 @@ class Has_Many_And_Belongs_To extends Relationship { $this->with = array_merge($this->with, array($foreign, $other)); // Since pivot tables may have extra information on them that the developer - // needs, we allow an extra array of columns to be specified that will be + // needs we allow an extra array of columns to be specified that will be // fetched from the pivot table and hydrate into the pivot model. foreach ($this->with as $column) { @@ -314,9 +314,14 @@ class Has_Many_And_Belongs_To extends Relationship { { $foreign = $this->foreign_key(); + // For each child we'll just get the parent that connects to the child and set the + // child model on the relationship array using the keys. Once we're done looping + // through the children all of the proper relations will be set. foreach ($children as $key => $child) { - $parents[$child->pivot->$foreign]->relationships[$relationship][$child->{$child->key()}] = $child; + $parent =& $parents[$child->pivot->$foreign]; + + $parent->relationships[$relationship][$child->{$child->key()}] = $child; } } @@ -337,7 +342,7 @@ class Has_Many_And_Belongs_To extends Relationship { // If the attribute key starts with "pivot_", we know this is a column on // the pivot table, so we will move it to the Pivot model and purge it - // from the model since it actually belongs to the pivot. + // from the model since it actually belongs to the pivot model. foreach ($result->attributes as $key => $value) { if (starts_with($key, 'pivot_')) @@ -367,9 +372,9 @@ class Has_Many_And_Belongs_To extends Relationship { { $columns = (is_array($columns)) ? $columns : func_get_args(); - // The "with" array contains a couple of columns by default, so we will - // just merge in the developer specified columns here, and we'll make - // sure the values of the array are unique. + // The "with" array contains a couple of columns by default, so we will just + // merge in the developer specified columns here, and we will make sure + // the values of the array are unique to avoid duplicates. $this->with = array_unique(array_merge($this->with, $columns)); $this->set_select($this->foreign_key(), $this->other_key());