首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在phalcon中从db检索类似的标记数据?

如何在phalcon中从db检索类似的标记数据?
EN

Stack Overflow用户
提问于 2016-04-04 07:16:22
回答 2查看 399关注 0票数 0

我是帕尔康的新人。我决定将Phalcon php作为Codeigniter的另一个php框架。我正在用标签实现一个博客。首先,im将标记值插入到db中的单个列中。下面是标记插件示例:将其插入的多个值插入单个列,如"php、jquery、asp、html、css“。

现在,我只需要从db检索到volt的值,如下所示:

代码语言:javascript
复制
[controller]

$bloger = $this->modelsManager->executeQuery("SELECT * FROM Blogs ORDER BY Blogs.datetime DESC");
$this->view->setVar('blogs', $bloger);

[volt]        

<?php 
$blogTags = array(); 
$blogTags = $bloger->tags;
$tags = explode(',',$blogTags); 
foreach($tags as $taged){ ?>
<a class="tags" href="blog/tag/<?php echo($taged); ?>">
<?php echo($taged); ?> <span>[ 0 ]</span></a>
<?php } ?>

现在它的链接是:"localhost/demo/blog/tag/php""localhost/demo/blog/tag/jquery",我的问题是如何从db检索每个标记相关的数据?

我想问这样的问题:

控制器

代码语言:javascript
复制
public function tagAction($taged)
{
$tags = Blogs::findBytags($taged);
$tagData = array();
$tagData = explode(',', $tags->tags);
$similar = Blogs::find(["tags LIKE :title:","bind"=> ["title"=>'%'.$tagData.'%'],"order" => "datetime DESC limit 5"]);
$this->view->setVar('tagged', $similar);
$this->view->pick('blog/tagline');
}

伏特

代码语言:javascript
复制
{% for similar in tagged %}
{{tagged.btitle}}
{% endfor %}

但它的渲染并不像预期的那样。如何检索匹配的数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-06 07:25:31

您可以循环遍历所有当前标记,并将它们逐一添加到查询中。在循环期间,您还将创建绑定元素数组。

代码语言:javascript
复制
[controller] 
...
$currenttags =  explode(',', $blog->tags);

$query          = Blogs::query();
$bindParameters = [];

for($i = 0; $i < count($currenttags); $i++) {
   $query->orWhere('tags LIKE :tag' . $i . ':');
   $bindParameters['tag' . $i] = '%' . $currenttags[$i] . '%';
}

$query->bind($bindParameters);
$similar = $query->execute();

$this->view->setVar('datas', $similar); 
票数 2
EN

Stack Overflow用户

发布于 2016-04-07 06:06:51

我的期望是,当用户访问一个帖子的详细视图时,我想向该帖子显示与该页面相关的/类似的其他帖子。它的标签制造出了相似性,现在我想出了这样的方法:

代码语言:javascript
复制
[controller]    

public function showfullAction($id)
{
$blog = Blogs::findFirstByid($id); 
$this->view->setVar('detail', $blog);
$currenttags =  explode(',',$blog->tags);

I want to make Loop Throw....
$dataCount = count($currenttags);
$tags1 = $currenttags[0];
$tags1 = $currenttags[0];
$tags2 = $currenttags[1];
$tags3 = $currenttags[2];
$tags4 = $currenttags[3];
$tags5 = $currenttags[4];
$tags6 = $currenttags[5];
$tags7 = $currenttags[6];
$tags8 = $currenttags[7];
$tags9 = $currenttags[8];

if($dataCount == '1')
{
$similar = $this->modelsManager->executeQuery("SELECT Blogs.* FROM Blogs WHERE Blogs.tags LIKE '%$tags1%'");
}
elseif($dataCount == '2')
{
$similar = $this->modelsManager->executeQuery("SELECT Blogs.* FROM Blogs WHERE Blogs.tags LIKE '%$tags1%' or Blogs.tags LIKE '%$tags2%'");
}
elseif($dataCount == '3')
{
$similar = $this->modelsManager->executeQuery("SELECT Blogs.* FROM Blogs WHERE Blogs.tags LIKE '%$tags1%' or Blogs.tags LIKE '%$tags2%' or Blogs.tags LIKE '%$tags3%'");
}


 $this->view->setVar('datas', $similar); 

等等..。

代码语言:javascript
复制
[View]

{% for similar in datas %}
{{link_to('blog/showfull/'~similar.id,similar.btitle,'class':'cats')}}  
{% endfor %}

现在它像预期的那样工作了,但是还有另外一种简单的简单的方法吗?请!蒂莫西

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36396598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档