Browse Source

Fix bug with many-to-many relationships on non-default database connection.

Taylor Otwell 12 years ago
parent
commit
b5f5927fa7

+ 13 - 1
laravel/database/eloquent/pivot.php

@@ -20,11 +20,13 @@ class Pivot extends Model {
 	 * Create a new pivot table instance.
 	 *
 	 * @param  string  $table
+	 * @param  string  $connection
 	 * @return void
 	 */
-	public function __construct($table)
+	public function __construct($table, $connection = null)
 	{
 		$this->pivot_table = $table;
+		$this->connection = $connection;
 
 		parent::__construct(array(), true);
 	}
@@ -39,4 +41,14 @@ class Pivot extends Model {
 		return $this->pivot_table;
 	}
 
+	/**
+	 * Get the connection used by the pivot table.
+	 *
+	 * @return string
+	 */
+	public function connection()
+	{
+		return $this->connection;
+	}
+
 }

+ 4 - 2
laravel/database/eloquent/relationships/has_many_and_belongs_to.php

@@ -349,7 +349,7 @@ class Has_Many_And_Belongs_To extends Relationship {
 			// Every model result for a many-to-many relationship needs a Pivot instance
 			// to represent the pivot table's columns. Sometimes extra columns are on
 			// the pivot table that may need to be accessed by the developer.
-			$pivot = new Pivot($this->joining);
+			$pivot = new Pivot($this->joining, $this->model->connection());
 
 			// 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
@@ -400,7 +400,9 @@ class Has_Many_And_Belongs_To extends Relationship {
 	 */
 	public function pivot()
 	{
-		return new Has_Many($this->base, new Pivot($this->joining), $this->foreign_key());
+		$pivot = new Pivot($this->joining, $this->model->connection());
+
+		return new Has_Many($this->base, $pivot, $this->foreign_key());
 	}
 
 	/**