New

Just launched: Vueblocks, a brand-new search engine for Vue packages! Explore Vueblocks →

elafries/firestore-model

A firestore model for laravel or lumen
43
Install
composer require elafries/firestore-model
Latest Version:v1.0.12
Laravel:8
License:MIT
Last Updated:Jul 28, 2021
Links: GitHub  ·  Packagist
Maintainer: bereczkybalazs

FirestoreModel for laravel or lumen

Initilaization

Set up credential file

Create and download a credential for service account
https://console.firebase.google.com/u/0/project/${PROJECT_ID}/settings/serviceaccounts/adminsdk
Copy the credential.json of the service account to root directory eg: firebase-credential.json

Set up .env

GOOGLE_CLOUD_PROJECT=google-project-id
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credential/file.json

Register service provider

Add this line to bootstrap/app.php
$app->register(Kreait\Laravel\Firebase\ServiceProvider::class);

Creating a model

This will create a model, which will connect to the users table


use Elafries\FirestoreModel\FirestoreModel;

class User extends FirestoreModel {

}

Handle model fields


use Elafries\FirestoreModel\FirestoreModel;

class User extends FirestoreModel {

    protected ?string $table = 'user';

    protected array $fillable = [
       'name', 'age', 'weight'
    ];

    protected array $hidden = [
        'password',
    ];

    protected array $secure = [
        'password',
    ];
}
table

This is an optional parameter.
The name will be generated from the lowercase classname joined with underscores. eg:
ThisIsATable >> this_is_a_table
If you fill the $table variable the table name will be overriden by its value.

fillable

When you insert to the database these fields will be added and the secure fields ONLY!

hidden

When you fetch from the database, these fields will be hidden

secure

When you insert/update the database these fields will be encrypted.
When you insert to the database, it will extend the fillable parameters.

Using a model via dependency injection


class UserController extends Controller 
{
    public function __construct(private User $user) {}
}

Queries

List queries

Fetch all item in the database :array
$this->user->all();
Fetch items in the database with filtering :array
$this->user->where('name', '=', 'test')->get();
Fetch items in the database with multiple where filtering :array
$this->user
    ->where('name', '=', 'test')
    ->where('age', '>', '33')
    ->where('weight', '>', '110')
    ->get();
Fetch items in the database with filtering and with all the hidden properties :array
$this->user->where('name', '=', 'test')->getRaw();

Single result queries

Fetch the first in the database with filtering :array
$this->user
    ->where('name', '=', 'test')
    ->where('age', '>', '33')
    ->first();
Fetch the first in the database with filtering and with all the hidden properties :array
$this->user
    ->where('name', '=', 'test')
    ->where('age', '>', '33')
    ->firstRaw();
Fetch the first in the database by id :array
$this->user->findById('2asd123a23a');
Fetch the first in the database by id, with all the hidden properties :array
$this->user->findByIdRaw('2asd123a23a');

Existence queries

Count all items in a query :int
$this->user
    ->where('name', '=', 'test')
    ->where('age', '>', '33')
    ->count();
Check if there is at least one result (exists) :bool
$this->user
    ->where('name', '=', 'test')
    ->where('age', '>', '33')
    ->exists();

Insert :array

$this->user->create([
    'name' => 'Bill Buffalo',
    'age' => 43,
    'weight' => 92,
    'password' => 'secret'
]);

Update

Update by id :void

$this->user->updateById('2asd123a23a', [
    'age' => 51,
    'weight' => 97,
]);

Update all which match the query :void

$this->user
    ->where('name', '=', 'test')
    ->where('age', '>', '33')
    ->update([
        'age' => 51,
        'weight' => 97,
    ]);

Delete

Delete all which match the query :void

$this->user
    ->where('name', '=', 'test')
    ->where('age', '>', '33')
    ->delete();

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

648,266,899 9,701
laravel/framework

The Laravel Framework.

604,216,237 34,982
laravel/tinker

Powerful REPL for the Laravel framework.

512,508,631 7,443
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

429,221,767 607
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

403,217,078 4,664

Version History

Version Released Laravel License
v1.0.12 8.* MIT
v1.0.11 8.* MIT
v1.0.10 8.* MIT
v1.0.9 8.* MIT
v1.0.8 8.* MIT