【问题标题】:Array from Controller to model [codeIgniter]从控制器到模型的数组 [codeIgniter]
【发布时间】:2013-02-25 12:35:19
【问题描述】:

这是我的问题:

Codeigniter 的文档是这样说的:

<?php

    $array = array('name' => $name, 'title' => $title, 'status' => $status);

    $this->db->where($array);

    // Produces: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'

?>

我只想将条件从控制器传递给我的 where 子句,以便:

控制器

<?php
    $condition = array('id' => $id_user)
    $data['info_user'] = $this->user_model->get_user($condition);
?>

型号

public function get_user($condition)
{
    $q = $this
        ->db
        ->where($condition)
        ->get('users');

    if($q->num_rows > 0)
    {
        return $q->row();
    }
}

返回:SELECT * FROM (users) WHERE 3 IS NULL

但是当我将数组直接放入模型中时($

【问题讨论】:

    标签: codeigniter


    【解决方案1】:

    没有必要传递一个数组,我什至不肯定它可以按照您尝试的方式完成。只需将值本身传递给模型,如下所示。已编辑答案以显示多个变量。

    控制器:

       $data['info_user'] = $this->user_model->get_user($id_user,$user_login);
    

    型号:

    public function get_user($id_user,$user_login)
    {
        $q = $this
            ->db
            ->where('id_user',$id_user)
            ->or_where('user_login',$user_login);
            ->get('users');
    
        if($q->num_rows == 1)
        {
            return $q->row();
        }
    }
    

    当您想从数据库中获取单个结果时,作为一个旁注,例如在检索用户时,始终检查单个结果而不是 > 0。您要确保只返回一个用户。

    【讨论】:

    • 嗯,这不是我正在寻找的解决方案:我想传递一个数组,以便我可以通过用户的登录名或 ID 获取用户。我有什么选择? Ps : 感谢对 num_rows == 1 的更正,你是对的
    • 好吧...您正在寻找什么?因为你发布的方式行不通。
    • (我按回车太快了:))
    • 单独传递值,你这样做的问题是你不能将数组传递给这样的函数。我会编辑答案,秒。
    • 好的,我就是这么做的。奇怪的是你不能将数组传递给模型吗?
    猜你喜欢
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2013-02-15
    • 2012-11-04
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多