duanbi3385 2019-06-25 15:25 采纳率: 100%
浏览 47

将结果页面从存储库的`findAll`方法转换为关联数组

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) {
    }
  }
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 csmar数据进行spss描述性统计分析
    • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
    • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
    • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
    • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
    • ¥15 运动想象脑电信号数据集.vhdr
    • ¥15 三因素重复测量数据R语句编写,不存在交互作用
    • ¥15 微信会员卡等级和折扣规则
    • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
    • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?