src/Spiritix/LadaCache/Database/LadaCacheTrait.php
<?php
/**
* This file is part of the spiritix/lada-cache package.
*
* @copyright Copyright (c) Matthias Isler <mi@matthias-isler.ch>
* @license MIT
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Spiritix\LadaCache\Database;
use Illuminate\Database\Eloquent\Model;
/**
* Trait for overriding Laravel's query builder in models.
*
* This trait must be added to all models in a project, otherwise it might result in unexpected behavior.
* If Laravel would not have hardcoded the query builder class, this file would not be required anymore.
*
* @package Spiritix\LadaCache\Database
* @author Matthias Isler <mi@matthias-isler.ch>
*/
trait LadaCacheTrait
{
/**
* Create a new pivot model instance.
*
* @param \Illuminate\Database\Eloquent\Model $parent
* @param array $attributes
* @param string $table
* @param bool $exists
* @param string|null $using
* @return \Illuminate\Database\Eloquent\Relations\Pivot
*/
public function newPivot(Model $parent, array $attributes, $table, $exists, $using = null)
{
return $using ? $using::fromRawAttributes($parent, $attributes, $table, $exists)
: Pivot::fromAttributes($parent, $attributes, $table, $exists);
}
/**
* Get a new query builder instance for the connection.
*
* @return \Illuminate\Database\Query\Builder
*/
protected function newBaseQueryBuilder()
{
$conn = $this->getConnection();
$grammar = $conn->getQueryGrammar();
return new QueryBuilder(
$conn,
$grammar,
$conn->getPostProcessor(),
app()->make('lada.handler'),
$this
);
}
}