Доступ к общедоступным методам в модели Doctrine (Code Igniter)

Я пытаюсь добавить разбиение на страницы в свой проект воспламенителя кода. Я использую Doctrine для своих моделей и не могу использовать $this->load->model('gif') для доступа к методам в моем контроллере. Я предполагаю, что модель Doctrine действует по-другому, но ведь есть способ вызвать общедоступные методы?

Вот мой контроллер:

   <?php

class View extends Controller 
{
     function index() 
     {
    // load pagination class
    $gifs = Doctrine::getTable('Gif')->findAll();
    $this->load->library('pagination');
    $config['base_url'] = base_url().'view/';
    $config['total_rows'] = count($gifs);
    $config['per_page'] = '5';
    $config['full_tag_open'] = '<p>';
    $config['full_tag_close'] = '</p>';

    $this->pagination->initialize($config);

    //load the model and get results
    //$this->load->model('gif');
    $data['results'] = $gifs->getGifs($config['per_page'],$this->uri->segment(2));



    // load the view

    $this->load->view('front_images', $data);
  }
}

Вот моя модель

<?php
class Gif extends Doctrine_Record {

    public function setTableDefinition() 
    {
        $this->hasColumn('photo_path', 'string', 255, array('unique' => true, 'notnull' => true));
        $this->hasColumn('title', 'string', 255, array('notnull' => true));
        $this->hasColumn('user_id', 'integer', 4);
        $this->hasColumn('token', 'string', 255);
    }

    public function setUp() 
    {       
        $this->actAs('Timestampable');      
        $this->hasOne('User', array(
            'local' => 'user_id',
            'foreign' => 'id'
        ));     
    }

    public function preInsert($event) 
    {
        $this->token = (sha1(rand(11111, 99999)));  
    }

    public function numGifs() {

        $result = Doctrine_Query::create()
            ->select('COUNT(*) as num_gifs')
            ->from('Gif')           
            ->fetchOne();
        return $result['num_gifs'];

    }

    public function getGifs($offset, $limit) 
    {

        $gifs = Doctrine_Query::create()            
            ->from('Gif g')         
            ->orderBy('g.created_at DESC')
            ->limit($limit)
            ->offset($offset)
            ->execute();        
        return $gifs;
    }




}

Как я могу вызывать методы numGifs и getGifs из этого контроллера? Заранее спасибо!


person Rapture    schedule 01.02.2011    source источник
comment
выдает какую-то ошибку?   -  person jondavidjohn    schedule 01.02.2011
comment
Это ошибка, которую я получаю: Неустранимая ошибка: вызов неопределенного метода Doctrine_Collection::getGifs() в C:\dev\yougotgifd\application\controllers\view.php в строке 20   -  person Rapture    schedule 01.02.2011


Ответы (1)


Я также использую CI в сочетании с доктриной. для справки я следую учебнику, расположенному по адресу http://www.phpandstuff.com/articles/codeigniter-doctrine-from-scratch-day-1-install-and-setup.

Я не знаю, выполняли ли вы аналогичные шаги, но при использовании этого подхода модели не нужно загружать, а скорее создавать экземпляры. для например.

$g = new Gif();
$g = $g->getGifs();

(хотя в этом конкретном случае - $ g ожидает только одну строку - я не уверен, можем ли мы определить функции получения внутри модели, представляющей саму таблицу. в следующей модели tuto am модель содержит только определение таблицы db, а также любые отношения)

надеюсь это поможет.

person kyushiro    schedule 15.04.2011