CodeIgniter MySQL Query не возвращает никаких данных, даже если есть данные, которые необходимо вернуть! - PullRequest
1 голос
/ 12 июля 2010

У меня есть модель CI, настроенная с помощью этой функции, и ActiveRecord:

function get_open_competitions()
{                                       
    $this->db->select('*, TO_DAYS(closingdate) - TO_DAYS(CURDATE()) AS days')
                ->from('challenges')
                ->where('closingdate >','CURDATE()')
                ->order_by('days','asc');

    $query = $this->db->get();          
    return $query;
}

Я на 99,9% уверен, что запустит этот запрос:

SELECT *, TO_DAYS(closingdate) - TO_DAYS(CURDATE()) AS days
FROM challenges
WHERE closingdate > CURDATE()
ORDER BY days ASC

Когда я отправляю этот простой запрос через phpMyAdmin или Sequel Pro, возвращает 5 строк - как и ожидалось - из базы данных. Однако, когда я вызываю в challenges контроллер следующий код:

    function index()
{
    // Fetch the Open for Entry competitions
    $data['open'] = $this->cm->get_open_competitions(); 
    // Fetch the Open for Voting competitions
    $data['voting'] = $this->cm->get_voting_competitions();
    // Fetch the Ended Competitions
    $data['ended'] = $this->cm->get_ended_competitions();   

    $data['colwide'] = 'challenges/challengeshome';
    $this->load->view('templatewide',$data);
}

... А затем в файле вида вызовите его вот так ...

<h2>Open for Entry</h2>

<hr/>

<?php foreach ($open->result() as $row) { ?>
    <h3>
        <?php echo anchor('challenges/view/'.$row->id, $row->title);?> - 
        <i>Challenge ends and voting begins in <?php echo $row->days;?> days</i>
    </h3>
    <h4> <?php echo $row->description;?> </h4>
<?php } ?>

... ничего не выводится!

Это сбивает меня с толку, потому что я уверен, что у меня есть правильный запрос, а также у меня есть две другие функции Model - get_ended_competitions и get_voting_competitions - обе из которых я использую наряду с этим, которые работают хорошо. Код определенно не отличается.

Что я делаю не так ?! : S

Спасибо!

Jack

Редактировать: ничего не записывается ни в журнал CodeIgniter, ни в журнал ошибок PHP.

1 Ответ

2 голосов
/ 12 июля 2010

Прежде всего, включите профилировщик в конструкторе контроллера:

$this->output->enable_profiler(true);

таким образом вы увидите, какие именно запросы генерируются.

LE: также, не забывайте о $this->db->last_query();;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...