передать кодовый массив для запроса - PullRequest
2 голосов
/ 03 марта 2011

Я пытаюсь передать массив в модель, у которой есть запрос. Я не уверен, как правильно передать массив или если мне нужно каким-либо образом манипулировать массивом.

У меня есть этот массив:

Array
(
    [0] => 1
    [1] => 2
)

У меня есть контроллер с этой строкой:

$ratings = $this->login_model->get_ratings($mechanicIds);   // get the mechanic ratings

У меня есть эта модель:

  function get_ratings($mechanicId)
    {
        $sql = "select m.mechanic_id, 
                   m.mechanic_name, 
                   m.city, 
                   m.state, 
                   count(mr.rating_id) as num_ratings, 
                   round(avg(mr.rating_id),2) avg_rating
                from mechanic m, mechanic_rating mr, rating r
                where m.mechanic_id in (?)
                and m.mechanic_id = mr.mechanic_id
                and mr.rating_id = r.rating_id";

        $query = $this->db->query($sql, $mechanicId);

        if($query->num_rows() > 0)
        {
            return $query->result_array();
        }
        else
        {
            return false;
        }
    }

На самом деле он возвращает результаты, но проблема в том, что он возвращает строку результатов только в том случае, если он должен возвращать 2, поскольку в моем массиве 2 результата. Кто-нибудь знает, что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Я нашел этот вопрос, который помог.

Ниже приведен код, который я использовал.

Контроллер, который содержит это:

                $mIds_size = count($mIds);
                $i = 1;

                foreach($mIds as $row)
                {
                    if($i == $mIds_size)
                    {
                        $mechanicIds .= $row;
                    }
                    else
                    {
                        $mechanicIds .= $row.', ';
                    }
                    $i++;
                }

                $ratings = $this->login_model->get_ratings($mechanicIds);   // get the mechanic ratings 

Модель, которая содержит это:

    function get_ratings($mechanicId)
    {

        $this->db->escape($mechanicId);

        $sql = "select m.mechanic_id, 
                       m.mechanic_name, 
                       m.city, 
                       m.state, 
                       count(mr.rating_id) as num_ratings, 
                       round(avg(mr.rating_id),2) avg_rating
                from mechanic m, mechanic_rating mr, rating r
                where m.mechanic_id in ($mechanicId)
                and m.mechanic_id = mr.mechanic_id
                and mr.rating_id = r.rating_id
                group by mechanic_id";

        $query = $this->db->query($sql, $mechanicId);

        if($query->num_rows() > 0)
        {
            return $query->result_array();
        }
        else
        {
            return false;
        }
    }
1 голос
/ 03 марта 2011

Измените эту строку:

$query = $this->db->query($sql, $mechanicId);

на эту:

$query = $this->db->query($sql, array(implode(', ',$mechanicId)));

согласно инструкция

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...