我有一个名为profiles
的流/表。它的所有列都是流域。我试图限制函数get_entries()返回的结果取决于某些条件。以下是我的代码:
$data = [
'stream' => 'profiles',
'namespace' => 'users',
'where' => 'user_id = 3' // lets say, this is my criteria
];
$row = $this->streams->entries->get_entries($data); // returns empty
变量$row
导致空数组。虽然表中有一行profiles
,其中user_id
是3.我已经阅读了pyrocms的文档,它几乎说明了使用where子句的确切方法(就像上面一样)。
注意:我也尝试过写作
'where'=> 'profiles.user_id = 3'`
快乐!避免表冲突。仍然没有
但是当我写这样的代码时: $ row = $ this-> streams-> entries-> get_entries($ query);
$query = [
'stream' => 'profiles',
'namespace' => 'users'
];
// No where clause this time
$row = $this->streams->entries->get_entries($query);
这次$ row返回所有行,包括用户ID为3的行。
我无法以正确的方式在get_entries中使用where子句。我可能犯了一些错误。帮帮我manz
注意:我正在使用社区版。
答案 0 :(得分:1)
我认为这可能是由于一个错误(好吧,不是一个错误,而是一个没有按预期工作的功能)。
如果我故意发出错误的查询,则sql查询输出为
SELECT [ ... ] LEFT JOIN `default_profiles` as `profiles` ON `profiles`.`user_id`=`default_profiles`.`created_by` WHERE (user_id` = 1) ORDER BY `default_profiles`.`created` DESC
在这里,您可以看到PyroCMS尝试查找" created_by"的数据。领域。在这种情况下,这并不起作用。
如果您停用' created_by'字段,你应该得到正确的行:
$this->streams->entries->get_entries(
array(
'stream' => 'profiles',
'namespace' => 'users',
'where' => 'user_id = 3',
'disable' => 'created_by'
)
);
如果您可以在pyrocms github页面上提交问题,那就太棒了。如果你不知道我会在接下来的几天内做到这一点。
答案 1 :(得分:0)
模型
public function get_entries($table, $where) {
$this->db->select('*');
$this->db->from($table);
foreach ($where as $key => $value) {
$this->db->where($key, $value);
}
$this->query = $this->db->get();
foreach ($this->query->result_array() as $row) {
$array1[] = $row;
}
if ($this->query->num_rows() == 0)
return false;
else
return $array1;
}
将此模型函数称为
$row = $this->streams->entries->get_entries('profiles',array('user_id '=>3));