【问题标题】:Joining tables with different field names using Grocery CRUD使用 Grocery CRUD 连接具有不同字段名称的表
【发布时间】:2014-01-26 05:01:29
【问题描述】:

我有下表

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`)
)

我对 Grocery CRUD 非常陌生,并且在加入这两个表时遇到了问题。联接将是maintrequests.landlordID = users.id。 Grocery 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();
}

【问题讨论】:

  • 您可以添加您的型号代码吗?
  • 添加控制器和型号代码
  • 你有什么错误吗?
  • 我还没有达到测试的地步,因为我不确定要使用的语法。他们的网站说要使用这种语法$crud->set_relation('user_id','users','username');。但是,这意味着 user_id 是两个表中的字段名称。就我而言,这不是真的

标签: mysql codeigniter grocery-crud


【解决方案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(); 

}

【讨论】:

  • 那么,不创建模型就不能加入不同的字段名?
【解决方案2】:

我遇到了同样的问题。就用这个吧:

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

如果**users** 表没有**landlordID** 键,Grocery 将获得**users** 表的PRIMARY KEY

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    相关资源
    最近更新 更多