将行从数据库查询获取到CodeIgniter中的数组

rap*_*ndy 2 php mysql arrays codeigniter

因此,我有以下数据库表,称为“ relacionproveedorfamilia”

-----------------------------
| idProveedor | idFamilia   | 
-----------------------------
|      5      |      1      |
-----------------------------
|      5      |      2      |
-----------------------------
|      6      |      2      |
-----------------------------  
Run Code Online (Sandbox Code Playgroud)

我使用的函数为idProveedor提供值,它应该返回一个数组,该数组包含属于提供的idProveedor的idFamilia值。

例如,这是获取idProveedor = 5的所有idFamilia的查询

SELECT idFamilia FROM relacionproveedorfamilia WHERE idProveedor = 5;
Run Code Online (Sandbox Code Playgroud)

查询的结果是:

---------------
| idFamilia   | 
---------------
|      1      |
---------------
|      2      |
---------------
Run Code Online (Sandbox Code Playgroud)

我正在尝试将查询结果放入数组,以便可以在视图中显示内容。

在我的模型Proveedormodel中,我具有以下功能,通过检查此站点中的其他类似问题进行了编码。

public function obtenerIdFamiliaProveedor($idProveedor){
     $query = $this->db->select('idFamilia')->from('relacionproveedorfamilia')->where('idProveedor', $idProveedor);
     $arrayFamilias = array();

     while($row = mysql_fetch_assoc($query)){
         $arrayFamilias[] = $row;
     }

     return $arrayFamilias;
 }
Run Code Online (Sandbox Code Playgroud)

但是在我看来,我收到了错误消息:

Message: mysql_fetch_assoc() expects parameter 1 to be resource, object given
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

sha*_*ggy 5

您正在将codeigniter查询构建器类与mysql_函数混合使用。你为什么做这个?

您必须更改代码:

while($row = mysql_fetch_assoc($query)){
Run Code Online (Sandbox Code Playgroud)

对此:

foreach ($query->result_array() as $row)
Run Code Online (Sandbox Code Playgroud)

并且您需要get在查询末尾添加方法:

$query = $this->db->select('idFamilia')->from('relacionproveedorfamilia')->where('idProveedor', $idProveedor)->get();
Run Code Online (Sandbox Code Playgroud)