错误:调用未定义的方法CodeIgniter \ Database \ MySQLi \ Result :: paginate()

在CI4中苦苦挣扎着paginate。用户指南中的所有示例都显示了->paginate()方法,该方法直接链接到Controller中的$model变量(不带参数)。

我在模型中拥有所有查询,因此如果paginate方法进入查询的末尾或在Controller中调用的位置,我会感到有些困惑。我都尝试过-都行不通。

型号:

    public function brand_name($brand_name_slug)
    {
        return $this
                    ->db
                    ->table('shop a')
                    ->select()
                    ->join('(SELECT sku,MIN(sale_price) AS sale_price FROM shop GROUP BY sku) AS b','a.sku = b.sku AND a.sale_price = b.sale_price')
                    ->where('availability','in stock')
                    ->where('a.sku !=','')
                    ->where('brand_name_slug',$brand_name_slug)
                    ->groupBy('a.sku')
                    ->orderBy('brand_name,subbrand_name,product,size,unit')
                    ->get()
                    ->paginate(10) // not working
                    ->getResult();
    }

它返回错误:Call to undefined method CodeIgniter\Database\MySQLi\Result::paginate()

我的控制器:

class Shop extends Controller
{

    public function brand_name($brand_name_slug)
    {
        $model = new ShopModel();

        $data = [
            'category_menu' => $model->category_menu(),'brand_menu' => $model->brand_menu(),'nav' => $model->nav(),'subnav' => $model->subnav(),'shop' => $model->brand_name($brand_name_slug)->paginate(10),// also doesn't work
            'pager' => $model->pager
        ];

        if (empty($data['shop']))
        {
            throw new \CodeIgniter\Exceptions\PageNotFoundException('Cannot find the news item: '. $slug);
        }

        echo view('templates/header',$data);
        echo view('shop/view',$data);
        echo view('templates/footer',$data);
    }

返回错误:Call to a member function paginate() on array

任何人都可以给我一些导航的指示吗?

iCMS 回答:错误:调用未定义的方法CodeIgniter \ Database \ MySQLi \ Result :: paginate()

您必须在没有pagination()get()的情况下使用getResult()函数,并且请注意,它是您的自定义模型所源自的Model类的函数。因此,您应该直接从模型中调用它,而不是从$this->db中调用它(这就是他不知道的原因)。

这应该是您模型中的函数:

public function brand_name($brand_name_slug)
    {
        return $this
                    ->table('shop a')
                    ->select()
                    ->join('(SELECT sku,MIN(sale_price) AS sale_price FROM shop GROUP BY sku) AS b','a.sku = b.sku AND a.sale_price = b.sale_price')
                    ->where('availability','in stock')
                    ->where('a.sku !=','')
                    ->where('brand_name_slug',$brand_name_slug)
                    ->groupBy('a.sku')
                    ->orderBy('brand_name,subbrand_name,product,size,unit')
                    ->paginate(10);
    }

在您的控制器中还有$data >

$data = [
            'category_menu' => $model->category_menu(),'brand_menu' => $model->brand_menu(),'nav' => $model->nav(),'subnav' => $model->subnav(),'shop' => $model->brand_name($brand_name_slug),'pager' => $model->pager
        ];
本文链接:https://www.f2er.com/2208666.html

大家都在问