数据库Codeigniter查询

时间:2018-08-08 10:22:43

标签: php codeigniter-3

我只能从Code Igniter中给定记录的数据库中提取数据。

在我的应用程序中,我有可以向其添加评论的域-一切都淹没了。

我可以添加,编辑,删除域和注释。

但是,当我进入显示的任何域卡时,所有笔记和我只想显示所选域的笔记。

我认为问题出在SQL查询方面-必须比较两个表: domains 表中的 id id_rel_domain ”。

但是,我不知道如何拥抱它。

我在ALTER TABLE上的 SQL FOREIGN KEY 数据库中具有链接关系:notes.id_domain_rel与domains.id。

我的代码(CodeIgniter)

我的控制器:

public function get($id = false)
{
    $result = $this->notes_model->get($id);
    echo '{"records":' . json_encode( $result ) . '}';
}

我的模特:

public function get( $id = false)
    {
        if ( $id == false ) {
            $q = $this->db->get('notes');
            $q = $q->result();
        }
        else{
            $this->db->where('id', $id);
            $q = $this->db->get('notes');
            $q = $q->row();
        }
        return $q;
    }

编辑笔记需要第二个条件-因为它获得了它们的ID。 但是,第一个显示所有域的所有注释。

我认为,我必须添加:

$this->db->where('notes.id_domain_rel', $domain.id);

但是,我想念如何做的想法。

获取所有域的数据,而不是我认为的一个域。

2 个答案:

答案 0 :(得分:0)

这可能是条件检查的问题。尝试在if语句中使用 === 。或使用 NULL 代替布尔值。

 public function get( $id = false)
        {
            if ( $id === false ) {
                $q = $this->db->get('notes')->result();
            }
            else{
                $q = $this->db->where('id', $id)->get('notes')->row();
            }
            return $q;
        }

答案 1 :(得分:0)

问题出在查询的一边,因为我移动的模型引用了注释表。

现在我必须以某种方式从域中提取数据,并将domains.id与notes.id_domain_rel比较

当我输入这样的代码时

    public function get( $id = false)
    {

        if ( $id == false ) {
            $this->db->select('*');
            $this->db->from('notes');
            $this->db->join('domains', 'notes.id_domain_rel = domains.id');
            $this->db->where('notes.id_domain_rel', 3);

            $q = $this->db->get();
            $q = $q->result();

        }
        else{
             $this->db->where('id', $id);
            $q = $this->db->get('notes');
            $q = $q->row();

        }
        return $q;
    }

他收到这样的数据: enter image description here

我认为必须有这样的东西:

$this->db->where('notes.id_domain_rel', $domainid);

但是,我不知道如何提取$ domainid。