PHP code example of ceddyg / query-builder-repository
1. Go to this page and download the library: Download ceddyg/query-builder-repository library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ceddyg / query-builder-repository example snippets
composer
namespace App\Repositories;
use CeddyG\QueryBuilderRepository\QueryBuilderRepository;
class ProductRepository extends QueryBuilderRepository
{
//By default $sTable = 'products'
protected $sTable = 'product';
//By default $sPrimaryKey = 'id'
protected $sPrimaryKey = 'id_products';
//The attributes that are mass assignable.
protected $fillable = ['name','category'];
}
$oRepository = new ProductRepository();
$oProducts = $oRepository->all(); //Collection
//or
$oProducts = $oRepository->all(['name']); //Collection
foreach ($oProducts as $oProduct)
{
//$oProduct is a StdClass
echo oProduct->name;
}
$oRepository = new ProductRepository();
$oProduct = $oRepository->find(1); //StdClass with all columns
//or
$oProduct = $oRepository->find(1, ['name']); //StdClass with specific columns
echo oProduct->name;
$oRepository = new ProductRepository();
$oProducts = $oRepository->findByField('name', 'Matrix'); //Collection
//or
$oProducts = $oRepository->findByField('name', 'Matrix', ['name', 'category']); //Collection
foreach ($oProducts as $oProduct)
{
//$oProduct is a StdClass
echo oProduct->name;
echo oProduct->category;
}
$oRepository = new ProductRepository();
$oProducts = $oRepository->findWhere(['price' => 20]); //Will find all products where the price = 20 and return a Collection
//or
$oProducts = $oRepository->findWhere(['price', '<', 20]); //Will find all products where the price < 20 and return a Collection
//or
$oProducts = $oRepository->findWhere([['price', '<', 20]], ['name']); //Will find all products where the price < 20 and return a Collection
//or
$oProducts = $oRepository->findWhere([['price', '<', 20], ['name', 'LIKE', 'Mat%']], ['name']);
foreach ($oProducts as $oProduct)
{
//$oProduct is a StdClass
echo oProduct->name;
}
$oRepository = new ProductRepository();
$oProducts = $oRepository->findWhereIn('name', ['Matrix', 'Matrix 2'])); //Collection
//or
$oProducts = $oRepository->findWhereIn('name', ['Matrix', 'Matrix 2'], ['name', 'category'])); //Collection
foreach ($oProducts as $oProduct)
{
//$oProduct is a StdClass
echo oProduct->name;
echo oProduct->category;
}
$oRepository = new ProductRepository();
$oProducts = $oRepository->findWhereNotIn('name', ['Matrix', 'Matrix 2'])); //Collection
//or
$oProducts = $oRepository->findWhereNotIn('name', ['Matrix', 'Matrix 2'], ['name', 'category'])); //Collection
foreach ($oProducts as $oProduct)
{
//$oProduct is a StdClass
echo oProduct->name;
echo oProduct->category;
}
$oRepository = new ProductRepository();
$oRepository->first(); //StdClass
//or
$oRepository->first(['name']); //StdClass
#### last
Return the last record.
$oRepository = new ProductRepository();
$aAttributes = [
'name' => 'Matrix 2',
'category' => 'DVD'
];
//or
$aAttributes = [
[
'name' => 'Matrix 2',
'category' => 'DVD'
],
[
'name' => 'Matrix 3',
'category' => 'DVD'
]
];
$oRepository->create($aAttributes);//Return insert id if 1 create or bool if multiple
$oRepository = new ProductRepository();
$oRepository->delete(1); //Delete the record with id 1
//or
$oRepository->delete([1, 2, 3]); //Delete the record with id 1, 2 and 3
$oRepository = new ProductRepository();
$sTable = $oRepository->getTable();
$oRepository = new ProductRepository();
$sPrimaryKey = $oRepository->getPrimaryKey();
$oRepository = new ProductRepository();
$oProducts = $oRepository->getFillFromView('product/index')->all();
//or
$oProducts = $oRepository->getFillFromView('product/index')->all(['name']);//Will merge fill in the view and parameters in all()
//Other
$oProduct = $oRepository->getFillFromView('product/index')->find(1);
$oProducts = $oRepository
->getFillFromView('product/index')
->findWhere([['price', '<', 20], ['name', 'LIKE', 'Mat%']], ['name']);
public function indexAjax(Request $oRequest)
{
$oRepository = new ProductRepository();
return $this->oRepository->datatable($oRequest->all());
}
$oRepository = new ProductRepository();
$oProducts = $oRepository->limit(0, 10)->all(); //Will take the first 10 records
//or
$oProducts = $oRepository->limit(5, 5)->all(); //Will take the 5 records after the 5th record.
//or
$oProduct = $oRepository->limit(0, 10)->find(1, ['name']); //Useless
namespace App\Repositories;
use CeddyG\QueryBuilderRepository\QueryBuilderRepository;
class ProductRepository extends QueryBuilderRepository
{
/**
* Indicates if the query should be timestamped.
*
* @var bool
*/
protected $bTimestamp = true;
/**
* The name of the "created at" column.
*
* @var string
*/
const CREATED_AT = 'created_at';
/**
* The name of the "updated at" column.
*
* @var string
*/
const UPDATED_AT = 'updated_at';
}
$oRepository = new ProductRepository();
$oProduct = $oRepository->first(['date_limit']);
echo $oProduct->date_limit; // 24/05/2017
$oRepository->update(1, ['date_limit' => '25/05/2017']) // Will store 2017-05-25 in the database
namespace App\Repositories;
use CeddyG\QueryBuilderRepository\QueryBuilderRepository;
class ProductRepository extends QueryBuilderRepository
{
protected $aFillable = ['name', 'category', 'price', 'date_limit'];
/**
* Will change a fill that came from the database
*
* @param Collection|StdClass $oItem
*/
public function getPriceAttribute($oItem)
{
return oItem->price * 1.2;
}
/**
* Will create a new attribute that not in database
*
* @param Collection|StdClass $oItem
*/
public function getReferenceAttribute($oItem)
{
return oItem->name.' '.oItem->category;
}
}
$oRepository = new ProductRepository();
$oProduct = $oRepository->first(['name', 'category', 'price', 'reference']);
namespace App\Repositories;
use CeddyG\QueryBuilderRepository\QueryBuilderRepository;
class ProductRepository extends QueryBuilderRepository
{
protected $aFillable = ['name', 'category', 'price', 'date_limit'];
/**
* List of the customs attributes.
*
* @var array
*/
protected $aCustomAttribute = [
'reference' => [
'name',
'category'
],
'tag_name' => [
'tag.name'
]
];
/**
* Will create a new attribute that not in database
*
* @param Collection|StdClass $oItem
*/
public function getReferenceAttribute($oItem)
{
return oItem->name.' '.oItem->category;
}
/**
* Will create a new attribute that not in database
*
* @param Collection|StdClass $oItem
*/
public function getTagNameAttribute($oItem)
{
return oItem->tag[0]->name;
}
public function tag()
{
$sForeignKey = 'fk_product';
$sOtherForeignKey = 'fk_tag';
//If $sForeignKey is null, the method will set 'product_id' (<table name>.'_id')
//If $sOtherForeignKey is null, the method will set tag_id (<table name of TagRepository>.'_id')
$this->belongsToMany('App\Repositories\TagRepository', 'product_tag', $sForeignKey, $sOtherForeignKey);
}
}
$oRepository = new ProductRepository();
$oProduct = $oRepository->first(['price', 'reference', 'tag_name']);
namespace App\Repositories;
use Ceddyg\QueryBuilderRepository\QueryBuilderRepository;
class ProductRepository extends QueryBuilderRepository
{
//By default $sTable = 'product'
protected $sTable = 'products';
//By default $sPrimaryKey = 'id'
protected $sPrimaryKey = 'id_products';
//The attributes that are mass assignable.
protected $fillable = ['name','category'];
public function tag()
{
$sForeignKey = 'fk_tag';
//If $sForeignKey is null, the method will set tag_id (<table name of TagRepository>.'_id')
$this->belongsTo('App\Repositories\TagRepository', $sForeignKey);
}
//or
public function tag()
{
$sForeignKey = 'fk_product';
$sOtherForeignKey = 'fk_tag';
//If $sForeignKey is null, the method will set 'product_id' (<table name>.'_id')
//If $sOtherForeignKey is null, the method will set tag_id (<table name of TagRepository>.'_id')
$this->belongsToMany('App\Repositories\TagRepository', 'product_tag', $sForeignKey, $sOtherForeignKey);
}
//or
public function tag()
{
$sForeignKey = 'fk_product';
//If $sForeignKey is null, the method will set 'product_id' (<table name>.'_id')
$this->hasMany('App\Repositories\TagRepository', 'product_id');
}
}
$oRepository = new ProductRepository();
//It will take the name attribut and add the relation tag to an attribut "tag"
$oProduct = $oRepository->find(1, ['name', 'tag']);
echo $oProduct->name;
echo $oProduct->tag->name;
//If belongsToMany or hasMany relation, $oProduct->tag is a Collection
foreach ($oProduct->tag as $oTag)
{
//$oTag is a StdClass
echo $oTag->name;
}
/**
* List of relations we allow in getFillFromView.
*
* @var array
*/
protected $aRelations = ['tag'];
$oRepository = new ProductRepository();
//True : collection | false : array (good way to work with a lot of data)
$oRepository->setReturnCollection(false); //True by default
//It will take the name attribut and add the relation tag to an attribut "tag"
$oProduct = $oRepository->find(1, ['name', 'tag']);
foreach ($oProduct->tag as $oTag)
{
//$oTag is a StdClass
echo $oTag->name;
}
namespace App\Repositories;
use Ceddyg\QueryBuilderRepository\QueryBuilderRepository;
class ProductRepository extends QueryBuilderRepository
{
protected $sConnection = 'mysql';
}
$oRepository = new ProductRepository();
$oRepository->setConnection('mysql');
$oProduct = $oRepository->find(1);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.