【问题标题】:Table join in CodeIgniter with Active Record and GroceryCrud使用 Active Record 和 GroceryCrud 在 CodeIgniter 中加入表
【发布时间】:2012-05-04 14:18:54
【问题描述】:

参考:http://www.grocerycrud.com/documentation/options_functions/set_model

我有 2 个这样的表:

[tblFitnessClasses] id uid 标题描述位置

[tblFitnessClassDateTimes] owner_uid startDate endDate startTime endTime 天数重复

基本上我希望表格最终是这样的:

(uid - hidden)  | Title     | Description   | Location  | Start Date    | End Date     | Start Time | End Time | Days      | Reccurence
                Swim Lesson  Level 1         Gym         05/04/2012     NULL            12:30       1:30        Mon,Wed,Fri   2  

在我的主控制器的一部分中,我有这个:

     function fitnessSchedule()
{
    $this->config->set_item('url_suffix', '');
    $crud = new grocery_CRUD();
    $crud->set_table('tblFitnessClasses');
    $this->load->model('schedule_model');
    $this->schedule_model->join_table('tblFitnessClasses','tblFitnessClassDateTimes');
    $crud->columns('title','description','location','startEventDate','endEventDate','startTime', 'endTime', 'days', 'recurrence', 'finalDate);
    $crud->display_as('title','Event')
         ->display_as('description','Description')
         ->display_as('location','Location')
         ->display_as('startEventDate','Start Date')
         ->display_as('endEventDate','End Date')
         ->display_as('startTime','Start Time')
         ->display_as('endTime','End Time');
    $crud->required_fields('title','location');
    $crud->set_subject('Event');             

    $output = $crud->render();
    $this->_example_output($output);     
}

在我的模型中,我有这个:

    <?php
class schedule_model extends CI_Model
{
        public function join_table($table1,$table2)
        {
          $this->output->enable_profiler(TRUE);//Turns on CI debugging

          $this->db->select("*");
          $this->db->from($table1);
          $this->db->join($table2, $table1.".uid". "=".$table2.".owner_uid"); // Join classes and class date times by UID

          $results = $this->db->get()->result();
            return $results;
        }
}
?>

当我运行此代码时,我得到一个包含所有必填字段的表格,但 table2 (tblFitnessClassDateTimes) 中的字段缺少所有信息。这些字段不填充其数据。除此之外,如果我选择编辑表格,它只会编辑able1(tblFitnessClassses)

【问题讨论】:

    标签: php mysql codeigniter activerecord


    【解决方案1】:

    您以错误的方式加载模型。事实上,你甚至没有加载一个!您只是在创建 grocery_CRUD 的新实例,而不是您编写的模型。

    $this->load->model('schedule_model');
    $this->schedule_model->join_table('tblFitnessClasses','tblFitnessClassDateTimes');
    

    【讨论】:

    • 更改后显示“致命错误:第 3 行的 C:\xampp\htdocs\codeigniter\application\models\schedule_model.php 中找不到类 'grocery_CRUD_Model'”(我有 'grocery_crud_model. php' 在我的模型文件夹中)非常感谢您清除其他错误!
    • @에이바 您需要扩展 CI_Model 而不是 grocery_CRUD_Model。您不能扩展您编写的另一个模型。我建议你看看 Grocery CRUD 文档,尤其是这个 grocerycrud.com/documentation/codeigniter_installation 和这个 grocerycrud.com/documentation/create-crud-codeigniter-tutorial
    • 有趣的是,在示例中它说要扩展grocery_CRUD_Model(以及扩展CI_Model的代码)。我会看一下文档。再次感谢。
    【解决方案2】:

    总是建议使用:

    $this->load->library('grocery_CRUD');
    

    因此代码应该是:

    $this->load->library('grocery_CRUD');
    
    $crud = new grocery_CRUD();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 2013-02-18
      • 1970-01-01
      • 2012-07-24
      • 2013-04-11
      • 1970-01-01
      • 2011-10-22
      相关资源
      最近更新 更多