• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
use paginate() on custom function

#1
Hello,
on my model i create new function returned an array:

public function get_corsi_modulo($tipologia_corsi=null,$id_argomenti=null){
$db = \Config\Database::connect();
$req="SELECT * FROM ".$this->table." where banned='no' and status='si'";
if(!is_null($tipologia_corsi))  $req.=" and tipologia_corsi='".$db->escapeString($tipologia_corsi)."'";
if(!is_null($id_argomenti))  $req.=" and id_argomenti='".$db->escapeString($id_argomenti)."'";
$query = $db->query($req);
$results = $query->getResultArray();
return $results;
}


How i can use the method paginate() on this function?
i try in my controller this:

$CorsiModel->get_corsi_modulo($params['tipologia'],null)->paginate();
but is returned error: 
Call to a member function paginate() on array
Reply

#2
Something like this, I use the Query Builder and Model.

PHP Code:
public function get_corsi_modulo($tipologia_corsi null$id_argomenti null)
{
    $db = \Config\Database::connect();
    
    $pager 
= \Config\Services::pager();
    
    $req
="SELECT * FROM ".$this->table." where banned='no' and status='si'";

    if ( ! is_null($tipologia_corsi))
    {
        $req.=" and tipologia_corsi='".$db->escapeString($tipologia_corsi)."'";
    }

    if ( ! is_null($id_argomenti))
    {
        $req.=" and id_argomenti='".$db->escapeString($id_argomenti)."'";
    }

    $query $db->query($req);

    return $this;
}

// You need to pass them to the view with $data.
$data = [
    'posts' => $posts->getLivePosts()->paginate(3),
    'pager' => $posts->pager,
];

// What ever your view is.
echo view('Insitefx\Blog\Views\posts\index'$data);

$CorsiModel->get_corsi_modulo($params['tipologia'], null)->paginate(10); 

Not sure if this will work with the db query but give it a try.

You also need to add the links in the view file.

PHP Code:
<?= $pager->links() ?>

I just wrote a tutorial on pagination in the CodeIgniter 4 Addins.
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply

#3
(08-10-2020, 05:29 AM)InsiteFX Wrote: Something like this, I use the Query Builder and Model.

PHP Code:
public function get_corsi_modulo($tipologia_corsi null$id_argomenti null)
{
    $db = \Config\Database::connect();
    
    $pager 
= \Config\Services::pager();
    
    $req
="SELECT * FROM ".$this->table." where banned='no' and status='si'";

    if ( ! is_null($tipologia_corsi))
    {
        $req.=" and tipologia_corsi='".$db->escapeString($tipologia_corsi)."'";
    }

    if ( ! is_null($id_argomenti))
    {
        $req.=" and id_argomenti='".$db->escapeString($id_argomenti)."'";
    }

    $query $db->query($req);

    return $this;
}

// You need to pass them to the view with $data.
$data = [
    'posts' => $posts->getLivePosts()->paginate(3),
    'pager' => $posts->pager,
];

// What ever your view is.
echo view('Insitefx\Blog\Views\posts\index'$data);

$CorsiModel->get_corsi_modulo($params['tipologia'], null)->paginate(10); 

Not sure if this will work with the db query but give it a try.

You also need to add the links in the view file.

PHP Code:
<?= $pager->links() ?>

I just wrote a tutorial on pagination in the CodeIgniter 4 Addins.

Not work! return paginate to all data not ones returned by function!
Reply

#4
Try this one, you where missing the semi-colons in the sql statements.

PHP Code:
public function get_corsi_modulo($tipologia_corsi null$id_argomenti null)
{
    $db = \Config\Database::connect();
    
    $req
="SELECT * FROM ".$this->table." where banned='no' and status='si';";

    if ( ! is_null($tipologia_corsi))
    {
        $req.=" and tipologia_corsi='".$db->escapeString($tipologia_corsi)."';";
    }

    if ( ! is_null($id_argomenti))
    {
        $req.=" and id_argomenti='".$db->escapeString($id_argomenti)."';";
    }

    $query $db->query($req);

    return $this;
}

// You need to pass them to the view with $data.
$data = [
    'posts' => $posts->getLivePosts()->paginate(3),
    'pager' => $posts->pager,
];

// What ever your view is.
echo view('Insitefx\Blog\Views\posts\index'$data);

$CorsiModel->get_corsi_modulo($params['tipologia'], null)->paginate(10); 

---------------------------------------------------

// CONTROLLER

public function someFunction()
{
    $pager = \Config\Services::pager();

    // You need to pass them to the view with $data.
    $data = [
        'posts' => $posts->getLivePosts()->paginate(3),
        'pager' => $posts->pager,
    ];

    // What ever your view is.
    echo view('Insitefx\Blog\Views\posts\index'$data);

    $CorsiModel->get_corsi_modulo($params['tipologia'], null)->paginate(10); 
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply


Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2020 MyBB Group.