这是我的查询
"SELECT * FROM package_info ORDER BY RAND() LIMIT 0,3;"
我尝试将它写在像这样的活动记录中。
$this->db->select('*');
$this->db->from('package_info');
$this->db->order_by("id", "random");
$this->db->limit(0, 3);
$result = $this->db->get();
但这不起作用。如何在活动记录中写这个?
答案 0 :(得分:1)
CodeIgniter并不强制要求您为大多数Query Builder语句提供2个参数,您可以通过执行->where('1=1')
来完成整个WHERE,并且完全正常。
我很惊讶有多少人不理解方法链接,但我会在我的例子中展示它更好......
$result = $this->db->select('*')
->from('package_info')
->order_by('rand()')
->limit(0, 3)
>get();
如上所述,如果原始查询中没有2个参数,则不要强迫添加两个参数。
使用这些基本查询可以做的另一件事是完全省略from('package_info')
并将表名保留在->get('package_info')
如果您无法使用查询构建器,则无需使用它。我不做一些事情(你不能将UNION与他们一起使用)。在这种情况下,只需使用
$result = $this->db->query("SELECT * FROM package_info ORDER BY RAND() LIMIT 0,3;");
答案 1 :(得分:1)
使用下面的代码,它可以正常工作 -
$this->db->select('*');
$this->db->from('package_info');
$this->db->order_by("id", "random");
$this->db->limit(3, 0);
$result = $this->db->get()->result();
// shows last executed query
echo $this->db->last_query();
// shows data fetched
echo "<pre>";
print_r( $result );
echo "</pre>";
您可以访问此链接以查看在Codeigniter中如何使用查询。 https://www.codeigniter.com/userguide2/database/active_record.html