首页 > 解决方案 > 如何在 CakePHP 3 中对结果数组进行分页

问题描述

我有一个find()方法if else statement可以查询数据库并将数据作为数组返回。该if部分工作正常。问题出在else零件上。当我尝试在浏览器中访问索引界面时,出现此错误。

Unable to locate an object compatible with paginate. 

RuntimeException

从我到目前为止收集到的内容来看,这些paginate() method作品使用的是对象而不是数组。我坚持如何达到我想要的结果。我是 CakePHP 的新手,我们将不胜感激。谢谢

/**
* Assets Controller
*
*
* @method \App\Model\Entity\Asset[] paginate($object = null, array $settings = [])
*/

class AssetsController extends AppController
 {
/**
 * Index method
 *
 * @return \Cake\Http\Response|void
 */
public function index()
{
    $this->loadModel('Users');
    $username = $this->request->session()->read('Auth.User.username');
    $userdetail = $this->Users->find('all')->where(['username' => $username])->first();
    $school = $userdetail->school_unit;
    $roleid = $userdetail->role_id;

    if ($roleid == 1) {
        $this->paginate = [
            'contain' => ['SchoolUnits', 'AssetConditions', 'AssetCategories', 'AssetGroups', 'AssetStatus']
        ];

        $assets = $this->paginate($this->Assets);

        $this->set(compact('assets'));
        $this->set('_serialize', ['assets']);
    } else {

        $results = $this->Assets->find('all')->contain(['SchoolUnits', 'AssetConditions', 'AssetCategories', 'AssetGroups', 'AssetStatus'])->where(['school_unit_id' => $school])->first();
        $assets = $this->paginate($this->$results);

        $this->set(compact('assets'));
        $this->set('_serialize', ['assets']);
    }
}

标签: phpcakephp-3.0

解决方案


推荐阅读