Merge remote-tracking branch 'laravel/develop' into develop
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
<?php namespace Laravel\Database\Eloquent;
|
||||
|
||||
use Laravel\Str;
|
||||
use Laravel\Database;
|
||||
use Laravel\Database\Eloquent\Relationships\Has_Many_And_Belongs_To;
|
||||
|
||||
@@ -103,17 +104,6 @@ abstract class Model {
|
||||
$this->fill($attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the accessible attributes for the given model.
|
||||
*
|
||||
* @param array $attributes
|
||||
* @return void
|
||||
*/
|
||||
public static function accessible($attributes)
|
||||
{
|
||||
static::$accessible = $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hydrate the model with an array of attributes.
|
||||
*
|
||||
@@ -157,6 +147,17 @@ abstract class Model {
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the accessible attributes for the given model.
|
||||
*
|
||||
* @param array $attributes
|
||||
* @return void
|
||||
*/
|
||||
public static function accessible($attributes)
|
||||
{
|
||||
static::$accessible = $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new model and store it in the database.
|
||||
*
|
||||
@@ -211,9 +212,7 @@ abstract class Model {
|
||||
*/
|
||||
public static function all()
|
||||
{
|
||||
$model = new static;
|
||||
|
||||
return $model->query()->get();
|
||||
return with(new static)->query()->get();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -420,6 +419,16 @@ abstract class Model {
|
||||
return ! $this->exists or $this->original !== $this->attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of the table associated with the model.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function table()
|
||||
{
|
||||
return static::$table ?: strtolower(Str::plural(basename(get_class($this))));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the dirty attributes for the model.
|
||||
*
|
||||
@@ -501,6 +510,14 @@ abstract class Model {
|
||||
return $this->relationships[$key];
|
||||
}
|
||||
|
||||
// Next we'll check if the requested key is in the array of attributes
|
||||
// for the model. These are simply regular properties that typically
|
||||
// correspond to a single column on the database for the model.
|
||||
elseif (array_key_exists($key, $this->attributes))
|
||||
{
|
||||
return $this->{"get_{$key}"}();
|
||||
}
|
||||
|
||||
// If the item is not a loaded relationship, it may be a relationship
|
||||
// that hasn't been loaded yet. If it is, we will lazy load it and
|
||||
// set the value of the relationship in the relationship array.
|
||||
|
||||
@@ -243,7 +243,7 @@ class Query {
|
||||
*
|
||||
* @return Connection
|
||||
*/
|
||||
protected function connection()
|
||||
public function connection()
|
||||
{
|
||||
return Database::connection($this->model->connection());
|
||||
}
|
||||
|
||||
@@ -15,11 +15,13 @@ class Belongs_To extends Relationship {
|
||||
/**
|
||||
* Update the parent model of the relationship.
|
||||
*
|
||||
* @param array $attributes
|
||||
* @param Model|array $attributes
|
||||
* @return int
|
||||
*/
|
||||
public function update($attributes)
|
||||
{
|
||||
$attributes = ($attributes instanceof Model) ? $attributes->get_dirty() : $attributes;
|
||||
|
||||
return $this->model->update($this->foreign_value(), $attributes);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php namespace Laravel\Database\Eloquent\Relationships;
|
||||
|
||||
use Laravel\Str;
|
||||
use Laravel\Database\Eloquent\Model;
|
||||
use Laravel\Database\Eloquent\Pivot;
|
||||
|
||||
@@ -48,7 +49,7 @@ class Has_Many_And_Belongs_To extends Relationship {
|
||||
/**
|
||||
* Determine the joining table name for the relationship.
|
||||
*
|
||||
* By default, the name is the models sorted and concatenated with an underscore.
|
||||
* By default, the name is the models sorted and joined with underscores.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
@@ -78,7 +79,7 @@ class Has_Many_And_Belongs_To extends Relationship {
|
||||
* @param array $joining
|
||||
* @return bool
|
||||
*/
|
||||
public function add($id, $attributes = array())
|
||||
public function attach($id, $attributes = array())
|
||||
{
|
||||
$joining = array_merge($this->join_record($id), $attributes);
|
||||
|
||||
@@ -88,12 +89,20 @@ class Has_Many_And_Belongs_To extends Relationship {
|
||||
/**
|
||||
* Insert a new record for the association.
|
||||
*
|
||||
* @param array $attributes
|
||||
* @param array $joining
|
||||
* @param Model|array $attributes
|
||||
* @param array $joining
|
||||
* @return bool
|
||||
*/
|
||||
public function insert($attributes, $joining = array())
|
||||
{
|
||||
// If the attributes are actually an instance of a model, we'll just grab the
|
||||
// array of attributes off of the model for saving, allowing the developer
|
||||
// to easily validate the joining models before inserting them.
|
||||
if ($attributes instanceof Model)
|
||||
{
|
||||
$attributes = $attributes->attributes;
|
||||
}
|
||||
|
||||
$model = $this->model->create($attributes);
|
||||
|
||||
// If the insert was successful, we'll insert a record into the joining table
|
||||
@@ -138,9 +147,6 @@ class Has_Many_And_Belongs_To extends Relationship {
|
||||
*/
|
||||
protected function insert_joining($attributes)
|
||||
{
|
||||
// All joining tables get creation and update timestamps automatically even though
|
||||
// some developers may not need them. This just provides them if necessary since
|
||||
// it would be a pain for the developer to maintain them manually.
|
||||
$attributes['created_at'] = $this->model->get_timestamp();
|
||||
|
||||
$attributes['updated_at'] = $attributes['created_at'];
|
||||
|
||||
@@ -7,11 +7,13 @@ class Has_One_Or_Many extends Relationship {
|
||||
/**
|
||||
* Insert a new record for the association.
|
||||
*
|
||||
* @param array $attributes
|
||||
* @param Model|array $attributes
|
||||
* @return bool
|
||||
*/
|
||||
public function insert($attributes)
|
||||
{
|
||||
$attributes = ($attributes instanceof Model) ? $attributes->attributes : $attributes;
|
||||
|
||||
$attributes[$this->foreign_key()] = $this->base->get_key();
|
||||
|
||||
return $this->model->create($attributes);
|
||||
|
||||
Reference in New Issue
Block a user