将带有参数的数组传递给 Codeigniter 4 中的模型

Passing array with parameters to Model in Codeigniter 4

我尝试将一组值从我的控制器传递到模型

我的控制器:

$arr_list = array('O','N','H'); 
$data['lista'] = $getmodel->query_list($arr_list1);

我的模型

public function query_list($list = '', $limit = 10, $lang = 'en')
{
    
$query = "SELECT tab1.id, name FROM tab_name";

$a = 0;
    
   foreach( $list as $value)  
        {  
           if ($value != ''){
               
            if ($a == 0){
            $query .= " AND (field = '".$value."' "; 
            }
            else
            {
             $query .= " OR field = '".$value."' ";  
            }
                
            $a = $a + 1; 
         }
      }

$query .= " ORDER BY RAND() "; 
}

我收到错误:数组到字符串的转换

此代码在 CI 2 中完美运行,但在 CI4 中不起作用。

为什么?

你的代码中有很多错误,但我会尽力提供帮助。

Docs CI4: $builder->whereIn()

生成一个 WHERE 字段 IN (‘item’, ‘item’) SQL 查询加入 AND 如果合适

$names = ['Frank', 'Todd', 'James'];
$builder->whereIn('username', $names);
// Produces: WHERE username IN ('Frank', 'Todd', 'James')

控制器

$this->data['return'] = $HotelModel->test(['1', '2', '3', '4']);

型号

public function test($array)
{
    return $this->db->table('tab_name')->whereIn('column',$array)->get()->getResultObject();
}

结果last_query

SELECT * FROM 'tab_name' WHERE 'column' IN ('1', '2', '3', '4')