Added transaction method to database connection and eloquent model.
This commit is contained in:
parent
fcff36a0ac
commit
0455438ebe
|
|
@ -84,6 +84,33 @@ protected function grammar()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute a callback wrapped in a database transaction.
|
||||||
|
*
|
||||||
|
* @param Closure $callback
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function transaction($callback)
|
||||||
|
{
|
||||||
|
$this->pdo->beginTransaction();
|
||||||
|
|
||||||
|
// After beginning the database transaction, we will call the Closure
|
||||||
|
// so that it can do its database work. If an exception occurs we'll
|
||||||
|
// rollback the transaction and re-throw back to the developer.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
call_user_func($callback);
|
||||||
|
}
|
||||||
|
catch (\Exception $e)
|
||||||
|
{
|
||||||
|
$this->pdo->rollBack();
|
||||||
|
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->pdo->commit();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute a SQL query against the connection and return a single column result.
|
* Execute a SQL query against the connection and return a single column result.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -103,17 +103,6 @@ public function __construct($attributes = array(), $exists = false)
|
||||||
$this->fill($attributes);
|
$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.
|
* Hydrate the model with an array of attributes.
|
||||||
*
|
*
|
||||||
|
|
@ -157,6 +146,28 @@ public function fill($attributes)
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the accessible attributes for the given model.
|
||||||
|
*
|
||||||
|
* @param array $attributes
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function accessible($attributes)
|
||||||
|
{
|
||||||
|
static::$accessible = $attributes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute a callback wrapped in a database transaction.
|
||||||
|
*
|
||||||
|
* @param Closure $callback
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function transaction($callback)
|
||||||
|
{
|
||||||
|
with(new static)->query()->connection()->transaction($callback);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new model and store it in the database.
|
* Create a new model and store it in the database.
|
||||||
*
|
*
|
||||||
|
|
@ -211,9 +222,7 @@ public static function find($id, $columns = array('*'))
|
||||||
*/
|
*/
|
||||||
public static function all()
|
public static function all()
|
||||||
{
|
{
|
||||||
$model = new static;
|
return with(new static)->query()->get();
|
||||||
|
|
||||||
return $model->query()->get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -243,7 +243,7 @@ protected function query()
|
||||||
*
|
*
|
||||||
* @return Connection
|
* @return Connection
|
||||||
*/
|
*/
|
||||||
protected function connection()
|
public function connection()
|
||||||
{
|
{
|
||||||
return Database::connection($this->model->connection());
|
return Database::connection($this->model->connection());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue