请帮我拿一下CI 4。
这是在CI 4-〉ItemsCatModel.php中的模型
public function get_items_cat() {
$builder = $this->table('items_category');
$query = $this->table('items_category')->orderBy('items_cat_id', 'asc')->getWhere($this->table, array(['items_flag' => 1], ['items_cat_id !=' => 6]));
return $query->getResultArray();
}
public function get_items_cat_bi($id) {
$query = $this->query("SELECT * FROM items_category WHERE items_cat_flag = 1 AND items_cat_id <> ' . $id . ' ORDER BY items_cat_id ASC");
return $query->getResultArray();
}
当我使用get_items_cat时,这是指向array()的错误****传递给CodeIgniter\Database\BaseBuilder::getWhere()的参数2必须是int或null类型,指定数组
我也试过这个查询..question-〉它和上面的查询是同一个查询还是不同的?
$query = $this->query("SELECT * FROM items_category WHERE items_cat_flag = 1 AND items_cat_id <> 6 ORDER BY items_cat_id ASC");
如果答案是肯定的,那么上面的查询运行良好。
但是如果我使用上面的查询*,当我运行我的控制器时,它失败了。
这是控制器-〉Home.php
public function __construct() {
$this->bannersModel = new BannersModel();
$this->itemsModel = new ItemsModel();
$this->itemsCatModel = new ItemsCatModel();
}
public function index() {
$data['items'] = $this->itemsModel->get_items();
$data['items_lain'] = $this->itemsModel->get_items_lain();
$i = 0;
foreach ($data['item'] as $key => $value) {
$category = $this->itemsCatModel->get_items_cat_bi($value['items_cat_id']);
$data['items'][$i]['category'] = $category;
}
$i++;
}
错误如下所示不能将stdClass类型的对象用作数组这是错误开始**$category = $this->itemsCatModel->get_items_cat_bi($value['items_cat_id']);
**
请你帮我解决这个问题,谢谢!
1条答案
按热度按时间7bsow1i61#
解释:
第一部分:
所有用户域模型扩展的
\CodeIgniter\Model
类没有内置的table(...)
方法。因此,您的自定义get_items_cat()
方法中的以下代码行应该抛出了错误。$builder = $this->table('items_category');
我想,您应该使用
$builder = $this->db->table('items_category');
来代替。第二部分:
$builder->getWhere()
get()
方法相同,不同之处在于它允许您在第一个参数中添加“where”子句,而不是使用$builder->where()
方法:getWhere
根据上面的参考,所讨论的方法需要一个
$limit
,它是一个int
或null
。然而,你却输入了一个数组(array(['items_flag' => 1], ['items_cat_id !=' => 6])
)。解决方案:
不要在第二个参数中传递
WHERE
条件,而是在第一个参数中传递。例如:附录
看起来
index()
自定义方法中的foreach
循环也是错误的。我很怀疑你是想把代码行
$i++;
放在foreach
循环中,否则$i
将 * 总是 * 被设置为0
。第二,你倾向于在
$data['item']
中循环,而你的初始声明引用了$data['items']
。注意单词 'item' 的复数形式中的差异。