我为这个可怕的标题道歉,我想不出如何解释我的问题。
在我的数据库中articles
,有tags
,,和下表articles_tags
。一篇文章可以有很多标签。
目前,我能够使用所有标签来获取所有文章,但是我希望能够基于其标签来查找文章。
我的选择很简单:
$articles = $this->Article->find('all', array(
// extra condition to check for tag, maybe?
'conditions' => array('Article.status' => 'active'),
'limit' => $this->articles_per_page,
'offset' => ($page_num-1)*$this->articles_per_page
));
我从数据库中返回的信息如下:
Array
(
[0] => Array
(
[Article] => Array
(
[id] => 1
)
[Tag] => Array
(
[0] => Array
(
[id] => 1
[name] => Ruby
[slug] => ruby
[uses] => 1
[ArticlesTag] => Array
(
[id] => 1
[article_id] => 1
[tag_id] => 1
)
)
)
)
如果我只想返回带有Ruby
标签的文章怎么办?
试试这个
// In your Article model
function getArticleByTagSql($tag)
{
$dbo = $this->getDataSource();
$subQuery = $dbo->buildStatement(
array(
'fields' => array('DISTINCT(ArticlesTag.article_id)'),
'table' => "articles_tags",
'joins' => array(
array('table' => 'tags',
'alias' => 'Tag',
'type' => 'INNER',
'conditions' => array('ArticlesTag.tag_id = Tag.id')
)
),
'alias'=>"ArticlesTag",
'conditions' => array("Tag.name"=>Sanitize::clean($tag_words)),
'order' => null,
'group' => "ArticlesTag.article_id"
),
$this
);
$subQuery = ' Article.id IN (' . $subQuery . ')';
return $dbo->expression($subQuery);
}
// In your Articles Controller
$this->paginate['conditions'][] = $this->Article->getArticleByTagSql($tag_name);
$this->paginate['conditions'][] = array('Article.status' => 'active');
$this->paginate['limit'] = $this->articles_per_page;
// or as per your example
$articles = $this->Article->find('all', array(
// extra condition to check for tag, maybe?
'conditions' => array('Article.status' => 'active',$this->Article->getArticleByTagSql($tag_name)),
'limit' => $this->articles_per_page,
'offset' => ($page_num-1)*$this->articles_per_page
));
问题内容: 我想用cakephp进行这样的查询: 这是我的$ conditions代码: 我正在使用Debugger :: dump()方法显示结果,并且结果仅使用最后一个“ OR”条件,而不是同时使用“ OR”条件: 我的问题是,如何进行查询以同时使用“ OR”条件? 请尽快回复..在此先感谢:) 问题答案: 请尝试以下方法: 将是 任何阵列没有指定,或者是。无需手动指定。
问题内容: 在Google上搜索后,我发现Elasticsearch的最大查询条件限制为1024? 它是可配置的吗?如果可以,请提供任何步骤。 谢谢,Sameer 问题答案: 默认值为1024,但是它是可配置的。在elasticsearch配置文件(例如yml文件)中,设置提及的设置:例如。
标签: Shell 条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误。 if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if … else 语句:
v3.0开始,herosphp 提供了一套全新的设置查询条件的接口: MysqlModel::where($field, $opt, $value); 参数名称 参数类型 参数说明 $field string OR function 字段名称, 如果传入的是 function 的话,则说明是闭包. 闭包传入的是一组查询条件。 $opt string 操作符,如果不传入 $value 的情况下,$o
问题内容: 我想像这样做一个ElasticSearch查询: 我试图像这样在NEST中实现它: 但这给了我这样的查询,其中的过滤器包装在 布尔值中 : 我应该如何更改我的NEST代码以提供正确的查询?是否必须将我的条款添加到 QueryContainer之外的 其他项目中? 问题答案: 如果要检查条件过滤器,可以在查询之前创建过滤器列表,如下所示: 如果在进行过滤器查询之前不需要检查任何条件,则可
和异常: 实体:GirMotiuRebuig 这个标准起作用了: