1. Go to this page and download the library: Download railken/eloquent-mapper 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/ */
railken / eloquent-mapper example snippets
namespace App;
use Railken\EloquentMapper\Map as BaseMap;
class Map extends BaseMap
{
/**
* Return an array of all models you want to map
*
* @return array
*/
public function models(): array
{
/** return [
\App\Models\User::class
]; **/
}
}
namespace App;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Foo extends Model
{
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function bar(): BelongsTo
{
return $this->belongsTo(Bar::class);
}
}
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Map;
use Railken\EloquentMapper\Contracts\Map as MapContract;
class AppServiceProvider extends ServiceProvider
{
/**
* @inherit
*/
public function register()
{
$this->app->bind(MapContract::class, Map::class);
}
}
use Railken\EloquentMapper\Scopes\FilterScope;
use Railken\EloquentMapper\With\WithCollection;
use Railken\EloquentMapper\With\WithItem;
use App\Models\Foo;
$foo = new Foo;
$query = $foo->newQuery();
$filter = "created_at >= 2019";
$scope = new FilterScope;
$scope->apply($query, $filter, new WithCollection([
new WithItem('bar')
]));
use Railken\EloquentMapper\Scopes\FilterScope;
use Railken\EloquentMapper\With\WithCollection;
use Railken\EloquentMapper\With\WithItem;
use Railken\EloquentMapper\Tests\Models\Author;
$author = new Author;
$query = $author->newQuery();
$filter = "name ct 'Mario'";
$scope = new FilterScope;
$scope->apply($query, $filter, new WithCollection([
new WithItem('books', 'tag.name eq "sci-fi"')
]));
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Office extends Model
{
/**
* @var array
*/
public $fillable = [
'name',
'description'
];
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function employees(): HasMany
{
return $this->hasMany(Employee::class);
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use App\Models\Office;
class Employee extends Model
{
/**
* @var array
*/
public $fillable = [
'name',
'description',
'office_id'
];
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function office(): BelongsTo
{
return $this->belongsTo(Office::class);
}
}
namespace App;
use Railken\EloquentMapper\Map as BaseMap;
class Map extends BaseMap
{
/**
* Return an array of all models you want to map
*
* @return array
*/
public function models(): array
{
return [
\App\Models\Employee::class,
\App\Models\Office::class
];
}
}
use App\Models\Office;
use Railken\EloquentMapper\Scopes\FilterScope;
$office = new Office;
$query = $office->newQuery();
$filter = "employees.name ct 'Mario Rossi' or employees.name ct 'Giacomo'"
$scope = new FilterScope();
$scope->apply($query, $filter);
echo $query->toSql();