2014-01-26 3 views
1

У меня есть ниже таблицыОбъединение таблиц с разными именами полей с использованием Бакалея CRUD

CREATE TABLE IF NOT EXISTS `maintrequests` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `propID` int(11) DEFAULT NULL, 
    `landlordID` int(11) NOT NULL, 
    `subject` varchar(45) DEFAULT NULL, 
    `message` varchar(200) DEFAULT NULL, 
    `status` varchar(50) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) 

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `email` varchar(45) DEFAULT NULL, 
    `firstname` varchar(45) DEFAULT NULL, 
    `lastname` varchar(45) DEFAULT NULL, 
    `created` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) 

Я очень новой для Бакалея CRUD и имеющие проблемы присоединения этих двух таблиц. Соединение будет maintrequests.landlordID = users.id. Все примеры на CRUD сайте продуктовом объединения таблиц, в которых соответствующие поля имеют одинаковые имена

Я нашел this ответ, но он даже говорит, что «это смешно»

Мой код контроллера

public function test(){ 
    $crud = new grocery_CRUD(); 
    $crud->set_subject('Maintenance Requests')->set_table('maintrequests')->columns('subject','created','status'); 
    $this->data['maintlist'] = $crud->render(); 


    $this->data['title'] = 'Maintenance Test'; 
    $this->load->view('global/_layout_main_test',$this->data); 
} 

Моя функция моей модели, которую я пытаюсь преобразовать в Бакалея

public function get_all_for_landlord_table($landlordid){ 
    return $this->db->select('maintrequests.subject,maintrequests.created,maintrequests.status,maintrequests.message,properties.address,units.unitnum')->order_by('maintrequests.created','asc')->from('maintrequests')->join('properties','maintrequests.propid = properties.id')->join('units','maintrequests.unitid = units.id')->where(array('maintrequests.landlordID'=>$landlordid))->get()->result(); 
} 
+1

Вы можете добавить свой код модели? –

+0

добавлен контроллер и код модели – mhopkins321

+0

Вы получаете какую-либо ошибку? –

ответ

1

Попробуйте этот код. Я не тестировал.

public function get_all_for_landlord_table($landlordid){ 

    $crud = new grocery_CRUD(); 
    $crud->set_table('maintrequests'); 
    $crud->set_relation('maintrequests.propid','properties','properties.id'); 
    $crud->set_relation('maintrequests.unitid','units','units.id'); 
    $crud->where('maintrequests.landlordID',$landlordid); 
    $output = $crud->render(); 

} 
+0

Итак, вы не можете присоединиться к различным именам полей, не создавая модель? – marifrahman

+0

@marifrahman, не создавая модель, вы не можете использовать код выше .. –

0

У меня была та же проблема. Просто используйте это:

$crud->set_table('maintrequests'); 
$crud->set_relation('**landlordID**','**users**','**firstname**'); 

Если **users** таблица не имеет ключа **landlordID**, Бакалея получает PRIMARY KEY из **users** таблицы.

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