Commit c777e31a authored by Jens Segers's avatar Jens Segers

Updating BelongsToMany method to match 4.1, fixes #73

parent 0ec7a248
...@@ -204,15 +204,24 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model { ...@@ -204,15 +204,24 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model {
* Define a many-to-many relationship. * Define a many-to-many relationship.
* *
* @param string $related * @param string $related
* @param string $table * @param string $collection
* @param string $foreignKey * @param string $foreignKey
* @param string $otherKey * @param string $otherKey
* @param string $relation
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/ */
public function belongsToMany($related, $collection = null, $foreignKey = null, $otherKey = null) public function belongsToMany($related, $collection = null, $foreignKey = null, $otherKey = null, $relation = null)
{
// If no relationship name was passed, we will pull backtraces to get the
// name of the calling function. We will use that function name as the
// title of this relation since that is a great convention to apply.
if (is_null($relation))
{ {
$caller = $this->getBelongsToManyCaller(); $caller = $this->getBelongsToManyCaller();
$name = $caller['function'];
}
// First, we'll need to determine the foreign key and "other key" for the // First, we'll need to determine the foreign key and "other key" for the
// relationship. Once we have determined the keys we'll make the query // relationship. Once we have determined the keys we'll make the query
// instances as well as the relationship instances we need for this. // instances as well as the relationship instances we need for this.
...@@ -221,12 +230,13 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model { ...@@ -221,12 +230,13 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model {
$instance = new $related; $instance = new $related;
$otherKey = $otherKey ?: $instance->getForeignKey() . 's'; $otherKey = $otherKey ?: $instance->getForeignKey() . 's';
// If no table name was provided, we can guess it by concatenating the two // If no table name was provided, we can guess it by concatenating the two
// models using underscores in alphabetical order. The two model names // models using underscores in alphabetical order. The two model names
// are transformed to snake case from their default CamelCase also. // are transformed to snake case from their default CamelCase also.
if (is_null($collection)) if (is_null($collection))
{ {
$collection = snake_case(str_plural(class_basename($related))); $collection = $instance->getTable();
} }
// Now we're ready to create a new query builder for the related model and // Now we're ready to create a new query builder for the related model and
...@@ -234,7 +244,7 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model { ...@@ -234,7 +244,7 @@ abstract class Model extends \Illuminate\Database\Eloquent\Model {
// appropriate query constraint and entirely manages the hydrations. // appropriate query constraint and entirely manages the hydrations.
$query = $instance->newQuery(); $query = $instance->newQuery();
return new BelongsToMany($query, $this, $collection, $foreignKey, $otherKey, $caller['function']); return new BelongsToMany($query, $this, $collection, $foreignKey, $otherKey, $relation);
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment