Using the eloquent repository library made by nilportuguess I made the following repository:
namespace App\Repositories;
use NilPortugues\Foundation\Infrastructure\Model\Repository\Eloquent\EloquentRepository;
use NilPortugues\Foundation\Domain\Model\Repository\Contracts\Identity;
use NilPortugues\Foundation\Domain\Model\Repository\Contracts\Fields;
use NilPortugues\Foundation\Domain\Model\Repository\Contracts\Sort;
use NilPortugues\Foundation\Domain\Model\Repository\Contracts\Pageable;
use NilPortugues\Foundation\Domain\Model\Repository\Contracts\Filter;
use NilPortugues\Foundation\Domain\Model\Repository\Page;
use App\Model\Rover;
class RoverRepository extends EloquentRepository
{
/**
* {@inheritdoc}
*/
protected function modelClassName()
{
return Rover::class;
}
/**
* {@inheritdoc}
*/
public function find(Identity $id, Fields $fields = null)
{
$eloquentModel = parent::find($id, $fields);
return $eloquentModel->toArray();
}
/**
* {@inheritdoc}
*/
public function findBy(Filter $filter = null, Sort $sort = null, Fields $fields = null)
{
$eloquentModelArray = parent::findBy($filter, $sort, $fields);
return $this->fromEloquentArray($eloquentModelArray);
}
/**
* {@inheritdoc}
*/
public function findAll(Pageable $pageable = null)
{
$page = parent::findAll($pageable);
return new Page(
$this->fromEloquentArray($page->content()),
$page->totalElements(),
$page->pageNumber(),
$page->totalPages(),
$page->sortings(),
$page->filters(),
$page->fields()
);
}
/**
* @param array $eloquentModelArray
* @return array
*/
protected function fromEloquentArray(array $eloquentModelArray) :array
{
$results = [];
foreach ($eloquentModelArray as $eloquentModel) {
//This is required to handle findAll returning array, not objects.
$eloquentModel = (object) $eloquentModel;
$results[] = $eloquentModel->attributesToArray();
}
return $results;
}
}
And over my Controller I use the method findAll()
:
$repository=new RoverRepository();
$data=$repository->dinfAll();
But how I will be able to turn fetched data into the variable $sata
as an associative row?
A var_dump($data)
shows the following:
class NilPortugues\Foundation\Domain\Model\Repository\Page#942 (7) {
protected $elements =>
class SplFixedArray#941 (0) {
}
protected $totalPages =>
int(1)
protected $totalElements =>
int(0)
protected $pageNumber =>
int(1)
protected $sort =>
class NilPortugues\Foundation\Domain\Model\Repository\Sort#938 (2) {
protected $properties =>
NULL
protected $order =>
NULL
}
protected $filter =>
class NilPortugues\Foundation\Domain\Model\Repository\Filter#953 (1) {
protected $filters =>
NULL
}
protected $fields =>
class NilPortugues\Foundation\Domain\Model\Repository\Fields#940 (1) {
private $fields =>
array(0) {
}
}
}