php - Grocery Crud 设置 3 个表之间的关系

标签 php mysql codeigniter foreign-keys grocery-crud

我有 3 个 sql 表,它们都是这种形式。

测试

  • 测试编号
  • 测试名

示例

  • 示例编号
  • example_test_id

一些东西

  • something_id
  • something_example_id

所以我想把 TEST 表的名字和 id 放在一起 并将其发送到表 EXAMPLE,然后将 example_id 发送到 SOMETHING 表。 完成关系后,我希望 TEST 表的名称由 SOMETHING 表中的 example_id 显示。

我们试过了

 $crud->set_relation_n_n('something','example','test','example_id','example_test_id','test_name');

它获取 TEST 的 ID 并将其保存到 example_test_id,但我们希望它保存在 something_example_id 并显示 test_name。 所有表都有外键和主键。 希望你明白。

最佳答案

如果您使用自定义模型函数而不是 set_relation_n_n 函数,这对您来说会更容易。

首先创建一个模型函数,从示例表中获取所有的id和test_id

public function get_example_list()
    {
        $this->db->select('example_id, example_test_id');
        $this->db->order_by('example_id asc');
        return $this->db->get('example')->result();
    }

接下来,创建第二个模型函数以使用第一个模型中的 test_id 获取 test_name

public function get_test_names($id)
    {
        $this->db->select('test_name');
        $this->db->from('test');
        $this->db->where('test_id', $id);
        $name=$this->db->get();
        return $name->row()->test_name; 
    }

在你的 Controller 中使用上面的函数创建一个包含你需要的数据的数组

$list = $this->your_model->get_example_list();

        foreach ($list as $column => $data) {
            $myarray[$data->example_id] = $this->your_model->get_test_names($data->example_test_id);
        }

最后使用“field_type”函数将数组传递给 something_example_id。

$crud->field_type('something_example_id','dropdown',$myarray);

现在。在 something_example_id 列中,您有一个下拉列表,显示 test_name 值并将 example_id 值保存在您的数据库中。

关于php - Grocery Crud 设置 3 个表之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35105294/

相关文章:

mysql - 如何将Mysql实时同步到Bigquery?

php - 我的 jQuery 每个函数都将额外的一行显示为未定义

php - 在 mysql php 上搜索

php - 无法将数据库结果传递到我在 Codeigniter 中的 View

php - 从 PHP 手动复制和编程生成的源代码中读取 XML 的区别

javascript - 互联网广播流媒体 API

php - 关联数组中的单个 mysql 字段

codeigniter - 为什么当我的中继响应 URL 指向 CodeIgniter Controller 时,Authorize.net 会抛出错误,否则不会抛出错误?

codeigniter - 在 CodeIgniter 中重命名上传的文件

php - (php) mysql_fetch_array - 它如何知道要访问哪一行