2014-09-24 4 views
0

Я сделал супер простой код для генерации данных из базы данных с помощью Codeigniter. Данные отображались на моем представлении, но есть некоторые проблемы. Каждая запись была сгенерирована 9 раз. Пример: у меня есть база данных идентификаторов данных с именем: John Doe, электронная почта: [email protected], Дата рождения: xxxx-xx-xx, она была циклической 9 раз.Кто-нибудь знает, что случилось с этим циклом foreach?

Вот модель:

<?php 

class Transaction extends CI_Model 
{ 
    function getdata() 
    { 
     $this->db->select('name, email, schools_name'); 
     $this->db->from('employee, schools'); 
     $r = $this->db->get(); 
     return $r; 
    } 
} 

контроллер:

<?php 

class Layer extends CI_Controller 
{ 
    function index() 
    { 
     $this->load->model('transaction'); 
     $data['data'] = $this->transaction->getdata(); 
     $data['title'] = 'This is title'; 
     $this->load->view('test', $data); 
    } 
} 

И вид:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Check</title> 
    </head> 
    <body> 
     <?php 
      echo heading($title, 1); 
      foreach (($data->result()) as $row) 
      { 
       echo '<p>Name: ' . $row->name . 'and <br> Email: ' . $row->email . '<br> Schools: '.$row->schools_name.'</p>'; 
      } 

     ?> 
    </body> 
</html> 

Может быть, я слишком устал, я просто не могу найти то, что причиной этого. : D

Большое спасибо,

Edit: var_dump результат с лимитом 1:

array(1) { [0]=> object(stdClass)#20 (3) { ["name"]=> string(16) "Braxton Amundson" ["email"]=> string(18) "[email protected]" ["schools_name"]=> string(21) "Penn State University" } } 
+0

Что такое данные? Является ли это массивом или объектом? Вы используете его как массив в контроллере, но объект в представлении. Разве вы не хотите сказать '$ data ['data'] -> result()?' " – AgmLauncher

+0

Почему у вас в скобках есть' $ data-> result() ' – Anthony

+0

что это?' $ This-> db -> from ('employee, school'); '? вы уверены, что хотите 2 таблицы? – Ghost

ответ

1

Я думаю, что вы пытаетесь выбрать одну из двух таблиц, в которых не допускается:

$this->db->from('employee, schools'); 

Вы должны обновить свой код, чтобы выбрать правильную (одну) таблицу на основе выбранных полей. Если вы хотите использовать обе таблицы, то вы должны перейти к стратегии (Join), такой как (Inner Join) и связать обе таблицы с определенным ключом или значением.

Вы можете использовать (Join) с помощью:

$this->db->join(); 

что объясняется хорошо (Here). Надеюсь, вы найдете это полезным.

+0

Я использую Query «SELECT employee.name, employee.email, schools.schools_name FROM employee, school» и не использует AR раньше, но его все еще. –

+0

@ Nucleo1985 Я думаю, что ваша логика совершенно неверна. Хороший способ решить вашу проблему состоит в том, чтобы хорошо понять концепцию Join с вашей стороны. Как я уже сказал в ответ, ваш запрос с использованием ActiveRecord WRONG.Я предпочитаю использовать SQL ($ this-> db-> query («Your Sql here»));), если вы считаете, что ваш запрос, упомянутый в вашем комментарии, соответствует вашим критериям. – Hatem

+0

Вы правы, я использую объединение и теперь его работу. $ This-> db-> выберите ('*'); $ this-> db-> from ('school'); $ this-> db-> join ('employee', 'employee.name = schools.schools_name', 'right'); return $ this-> db-> get(); –

Смежные вопросы