Codeigniter 2 не возвращается из модели как объект только как массив результатов - PullRequest
0 голосов
/ 26 марта 2011

Итак, я некоторое время использовал codeigniter, и у меня никогда не возникало проблем с запуском запроса в моей модели и возвратом его в мой контроллер, который затем передает его в мое представление, где я получаю к нему доступ как объект так:

МОДЕЛЬ (somemodel)

function getdata()
{
  $query = $this->db->get('sometable');
  return $query;
}

КОНТРОЛЛЕР (somecontroller)

function controldata()
{
  $this->load->model('somemodel');
  $data['dbdata'] = $this->somemodel->getdata();
  $this->load->view('someview',$data);
}

ПРОСМОТР (someview)

<?php 
foreach($dbdata->result() as $row) {
  echo $row->id;
  echo $row->name;
  echo $row->whatever;
  echo "<br />";
}
?>

Но теперь по какой-либо причине в 2.0 вместо него используется $ dbdata-> result_array () в качестве $ row.

По сути, вместо этого он возвращает результаты в виде массива.

Не имеет никакого смысла, что-то изменилось в новой версии?

Спасибо

Так вот мой код:

MODEL (admin_model)

function show_allproducts($sort,$order,$limit,$offset)
{
    $this->db->select('products.id,productcategories.categoryname,products.name,products.internetspecial,products.added,products.modified');
    $this->db->from('products');
    $this->db->join('productcategories','products.productcategories_id = productcategories.id');
    $this->db->order_by($sort,$order);
    $this->db->limit($limit,$offset);

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

    if($query->num_rows() > 0)
    {
        return $query;
    }
    else
    {
        return FALSE;
    }
}

КОНТРОЛЛЕР (admin)

function show_allproducts()
{
    $data['title'] = 'All Products';

    $this->load->library('pagination');
    $config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/admin/show_allproducts';
    $config['total_rows'] = $this->db->get('products')->num_rows();
    $config['per_page'] = 10;
    $config['num_links'] = 5;
    $config['full_tag_open'] = '<div class="paggination right">';
    $config['full_tag_close'] = '</div>';
    $config['prev_link'] = '&lt;&nbsp;prev';
    $config['next_link'] = 'next&nbsp;&gt;';
    $config['cur_tag_open'] = '<a class="active">';
    $config['cur_tag_close'] = '</a>';
    $this->pagination->initialize($config);

    $this->load->model('admin_model');
    $data['tabledata'] = $this->admin_model->show_allproducts('name','ASC',$config['per_page'],$this->uri->segment(3));

    $data['nav'] = 'admin/pagesections/nav';
    $data['maincontent'] = 'admin/pages/show_allproducts';

    $this->load->view('admin/template',$data);
}

ПРОСМОТР (show_all_products)

<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <?php if($tabledata) { ?>            

        <tr>
            <th>ID</th>
            <th>CATEGORY</th>
            <th>NAME</th>
            <th>ADDED</th>
        </tr>

        <?php foreach($tabledata->result() as $row) { ?>

            <tr>
                <td><?php echo $row->id; ?></td>
                <td><?php echo $row->categoryname; ?></td>
                <td><?php echo $row->name; ?></td>
                <td><?php echo $row->added;) ?></td>
            </tr>

        <?php } ?>
    <?php } else { ?>
        <tr>
            <td>NO DATA</td>
        </tr>
    <?php } ?>

</table>

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

Ладно, ребята, не лгите, я нашел причудливую проблему

Глядя на четвертый тд, где $ row-> добавлено; в конце, есть близкие парантезы в конце этого, которые вызывали 4 дня беспредела.

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

2 голосов
/ 26 марта 2011

Если вы не укажете $ dbdata-> result_array () как $ row , результаты не будут возвращаться в виде массива.Тот же код, который вы опубликовали, должен работать в CI 2.0.

Если нет, возможно, проблема в $ this-> db-> get ('sometable') .

Попробуйте с $ this-> db-> query ('select * from sometable') .Но, насколько я знаю, оба одинаковы ...

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