imunew / laravel-database-queries
0.3
2021-01-16 12:19 UTC
Requires
- php: ^7.0|^8.0
- ext-json: *
- illuminate/support: ^5.5|^6|^7|^8
Requires (Dev)
- laravel/legacy-factories: ^1.0.4
- orchestra/testbench: ^5.1|^6.0
This package is auto-updated.
Last update: 2025-03-16 21:50:48 UTC
README
This package provides abstract Database Query class, Chain class, make:database-query
command.
abstract Database Query class
The abstract Database Query
class has the following features.
- Delegate query function to Eloquent Model (Query Builder)
- Declare (limited) which Eloquent Model to use
- Set query parameters in the constructor
namespace App\Database\Queries\User; use App\Models\User; use Imunew\Laravel\Database\Queries\Query; use RuntimeException; /** * Class SameName * @package App\Database\Queries\User * * @mixin User */ class SameName extends Query { /** * SameName constructor. * @param array $parameters * @param array $with */ public function __construct(array $parameters, array $with = []) { parent::__construct(User::class, $parameters, $with); } /** * {@inheritdoc} */ protected function validateParameters(array $parameters, ?string &$errorMessage) { if (!array_key_exists('name', $parameters)) { $errorMessage = 'The parameter \'name\' must not be empty.'; return false; } return true; } /** * {@inheritdoc} */ protected function buildQuery(array $parameters) { $this->whereName($parameters['name']); return $this; } }
use App\Database\Queries\User\SameName; function findByName(string $name) { $query = new SameName(['name' => $name]); return $query->build()->get(); }
Chain class
The Chain class has the following features.
- You can combine multiple Query classes (specify the same model class) and build at once
use App\Database\Queries\User\SameName; use App\Database\Queries\User\SameEmail; use Imunew\Laravel\Database\Queries\Chain; function firstByNameAndEmail(string $name, string $email) { $chain = Chain::all([ new SameName(['name' => $name]), new SameEmail(['email' => $email]) ]); return $chain->build()->first(); }
make:database-query
command
You can create a Query by executing the command as follows.
$ php artisan make:database-query {name} --model={model}