Skip to content

DiveshDwivedi/bright

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

An extension to laravel for quick develpment

Install

    composer require diviky/bright

Setup

    php artisan bright:setup
    php artisan vendor:publish --tag="bright-config"
    php artisan vendor:publish --tag="bright-assets"
    php artisan vendor:publish --tag="bright-views"
    php artisan vendor:publish --tag="bright-migrations"

    //Copy webpack and some other files
    php artisan vendor:publish --tag="bright-setup"
    bower install selectize --save
    npm install jquery --save
    npm install popper.js --save
    npm install bootstrap --save
Filter the query with input values
$filters = [];
// $query->whereRaw('date(created_at) = ?', ['2019-10-12'])
$filters[] = ['date[created_at]' => date('Y-m-d')];

// $query->whereDateBetween('created_at between ? and ? ', ['2019-10-12', '2019-10-22'])
$filters[] = ['range[created_at]' => date('Y-m-d') .' - '. date('Y-m-d')];

// $query->whereBetween('created between ? and ? ', [strtotime('-1 day'), time()])
$filters[] = ['timestamp[created]' => date('Y-m-d') .' - '. date('Y-m-d')];

//
$filters[] = ['unixtime[created]' => date('Y-m-d') .' - '. date('Y-m-d')];
$filters[] = ['between[created]' => date('Y-m-d') .' - '. date('Y-m-d')];

$filters[] = ['filter[name]' => 'bright']; // $query->where('name', '=', 'bright')
$filters[] = ['filter[first_name|last_name]' => 'bright']; // $query->where('first_name', '=', 'bright')->orWhere()
$filters[] = ['lfilter[name]' => 'bright']; // $query->where('name', 'like', '%bright%')
$filters[] = ['rfilter[name]' => 'bright']; // $query->where('name', 'like', 'bright%')
$filters[] = ['efilter[name]' => 'bright']; // $query->where('name', 'like', '%bright')

$rows = DB::table('users')
    ->filter($filters)
    ->get();

Database Filter

filter method used to filter the database columns in query builder. it accepts requets object as array.

Avaliable filters

filter[] uses the $builder->where($column, $value). uses array key as column name and value as value. ex: filter[column]='value'

lfilter[] uses the $builder->where($column, '%'.$value.'%') with like match. uses array key as column name and value as value. ex: lfilter[column]='value'

use the | notation to filter or condition. ex: filter[comments|title]=xxx use the : notation to filter with relation table. ex: filter[posts:title]=xxx use the . notation to filter the table alias in join query. ex: filter[comments.title]=xxx use the scope[] to filter the model scopes. ex: scope[status]=1 will run $builder->status(1) use parse[] to DSL Parser for a filter query langague. Example queries in this language:

  • price = 100
  • price != 100
  • price > 100
  • price < 100
  • price <= 100
  • price >= 100
  • name =~ "brig%"
  • price > 100 AND active = 1
  • status = "pending" OR status = "approved"
  • product.price > 100 AND category.id = 7
  • product:price > 100 AND category:id = 7
  • name =~ "Foo%"
  • created_at > "2017-01-01" and created_at < "2017-01-31"
  • status = 1 AND (name = "PHP Rocks" or name = "I ♥ PHP")

Model Relations

Return single model with merged attributes from relations

flattern

The flattern($except, $exlcude) method merge the key and values of releations into primary model attributes and return the combines attributes. Releation keys will overwrite the primary keys if they are same.

use App\Models\User;

$rows = Book::with('author')->get();

$rows->transform(function($row) {
    return $row->flattern();
});

flat

The flat($except, $exlcude) method merge the key and values of releations into primary model attributes and return the combines attributes.

use App\Models\User;

$rows = Book::with('author')->get();

$rows->transform(function($row) {
    return $row->flat();
});

some

The some($keys) method get few keys from the relationships and primary model.

use App\Models\User;

$rows = Book::with('author')->get();

$rows->transform(function($row) {
    return $row->some(['id', 'author.name']);
});

except

The except($keys) method get few keys from the relationships and primary model.

use App\Models\User;

$rows = Book::with('author')->get();

$rows->transform(function($row) {
    return $row->except(['author.id']);
});

merge

The merge($keys) method add additional key value pairs to model attributes.

use App\Models\User;

$rows = Book::with('author')->get();

$rows->transform(function($row) {
    return $row->merge(['extra' => 'value']);
});

concat

The concat($keys) method add relations key values to attributes.

use App\Models\User;

$rows = Book::with('author')->get();

$rows->transform(function($row) {
    return $row->concat(['author.id','author.name']);
});

combine

The combine($keys) method to merge and contact the releations and attributes.

use App\Models\User;

$rows = Book::with('author')->get();

$rows->transform(function($row) {
    return $row->combine(['author.id', 'author.name']);
});

Eloquent: Collections

flatterns

The flatterns($except, $exlcude) method merge the key and values of releations into primary model attributes and return the combines attributes. Releation keys will overwrite the primary keys if they are same.

use App\Models\User;

$books = Book::with('author')->get();

$books = $books->flatterns($except, $exclude);

flats

The flats($except, $exlcude) method merge the key and values of releations into primary model attributes and return the combines attributes.

use App\Models\User;

$books = Book::with('author')->get();

$books = $books->flats($except, $exclude);

few

The few($keys) method get few keys from the relationships and primary model.

use App\Models\User;

$books = Book::with('author')->get();

$books = $books->few(['id', 'author.name']);

Sorting task

<tbody ajax-content class="table_sortable_body">
    ...
    <td sortable>
        <i class="fa fa-arrows-v fa-lg"></i>
        <input type="hidden" name="sorting[{{ $row->id }}]" value="{{ $row->ordering }}" />
    </td>
</tbody>
    if ($task == 'sorting') {
        $sorting = $this->input('sorting');
        $this->get('resolver')->getHelper('speed')->sorting('table', $sorting, 'id');

        return [];
    }

Builder Extended Methods

Iterating results

If you like fetch all the rows with chunks and modify using callaback

$rows = DB::table('large_table')->iterate(1000);

$rows = DB::table('large_table')->iterate(1000, function($row) {

    return $row;
});
Get results from multiple tables

If you have data in multiple tables, want to retrive table after table with pagination

$rows = DB::tables(['roles', 'roles1', 'roles2'])->complexPaginate();
Cache the query results

If you want to cache the results

$rows = DB::table('uses')
    ->remember($minutes, $cache_key)
    ->get();

$rows = DB::table('uses')
    ->rememberForever($cache_key)
    ->get();
Delete from select query
$rows = DB::table('users')
    ->filter($filters)
    ->deletes();
$rows = DB::table('users')
    ->whereDateBetween('created_at', [date(), date()])
    ->get();
Get Trashed && Non Trashed

Get non deleted items

$rows = DB::table('users')
    ->withOutTrashed()
    ->get();

Get only deleted items

$rows = DB::table('users')
    ->onlyTrashed()
    ->get();
Raw Expressions
$rows = DB::table('orders')
    ->groupByRaw(['username']);
    ->groupByRaw('price * ? as price_with_tax', [1.0825]);
    ->get()
$rows = DB::table('orders')
    ->selectRaw(['max(price)', 'order_id']);
    ->groupByRaw('price * ? as price_with_tax', [1.0825]);
    ->get()
$rows = DB::table('orders')
    ->selectRaw(['max(price)', 'order_id']);
    ->whereBetweenRaw('max(price)', [1.0825, 2]);
    ->get()
Ordering
$rows = DB::table('orders')
    ->ordering($data, ['order_id' => 'desc']);
    ->groupByRaw('price * ? as price_with_tax', [1.0825]);
    ->get()
Timestamps

Set the timestamps 'created_atandupdated_atfor insert andupdated_at` for update

    $result = DB::table('orders')
        ->timestamps()
        ->insert($values)
    $result = DB::table('orders')
        ->timestamps()
        ->update($values)
    $result = DB::table('orders')
        ->timestamps(false)
        ->update($values)
<div class="form-group">
    <label class="form-label">Sent By Employee</label>
    <select name="sent_by" class="form-control" data-select-ajax="{{ url('search/employee') }}">
        <option value="">Search Employee</option>
    </select>
</div>

Flatten Relations

Return single model with merged attributes from relations

// except the relations from merge
$model = $model->flatten($except);

// Take some keys
$model = $model->some(['id']);

// Take except
$model = $model->except(['id']);

// Append keys to attributes
$model = $model->merge(['id' => 1]);

// Apped relation keys to attributes
$model = $model->concat(['relation.id']);

// combination of merge and contact
$model = $model->combine(['relation.id']);

License

The MIT License (MIT). Please see License File for more information.

About

Laravel package

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 72.7%
  • JavaScript 24.3%
  • Blade 2.8%
  • Shell 0.2%