【问题标题】:Cakephp 3.5 query - Filter entries with same titleCakephp 3.5 查询 - 过滤具有相同标题的条目
【发布时间】:2018-03-06 17:15:50
【问题描述】:

我正在将 CakePhp 3.5 用于我正在进行的项目。我的问题是关于构建查询。我有一个不断增长的数据库,其中包含idtitlecontentuser_id 和一些,在这种情况下并不是真正有趣的领域。

该软件是关于事件管理的,因此具有相同标题的条目可以(并且可能会)在每个字段中都相同,但在日期或时间方面却不同。但在这种情况下,我唯一关心的是标题。

我正在做一个自动完成功能,为用户提供通过 Ajax 使用以前输入的数据填写添加表单的可能性。

所以当用户输入标题时,我正在搜索具有相似标题的旧条目。

由于标题翻倍完全没问题,我得到了应有的结果。但我只需要为每个唯一标题获得一个结果,即如果有 5 个标题为“Party”的条目,我只想获得其中 1 个。 但如果还有标题为“Party at McDonalds”和“Partybus planning”的活动,我想获得一份清单:

  • “聚会”
  • “麦当劳派对”
  • 《Partybus 规划》

每个相关标题都显示一个条目。

不同的内容不会打扰我。如果我的用户为不同的内容设置相同的标题,那是他们自己的问题。他们必须学习如何使用标题才能使用该软件。

我正在寻找某种条件或选择器,它告诉 cake 只获取每个相同标题的一个条目。从长远来看,在 php 中这样做会导致软件泄漏,这是本项目计划的。

我当前的查询如下所示:

$events_query = $this->Events
    ->find()
    ->where([
        'title LIKE' => '%' . $this->request->data('title') . '%'
    ])
    ->andwhere([
        'user_id' => $this->Auth->user('id')
    ]);

有人可以解决我的问题吗?我有点卡住了,所以也许有人可以指出我正确的方向。

提前致谢!

【问题讨论】:

    标签: php sql cakephp cakephp-3.x


    【解决方案1】:

    您需要group标题与查询构建器的group()-Function

    请看这里:https://book.cakephp.org/3.0/en/orm/query-builder.html#aggregates-group-and-having

    【讨论】:

    • distinct 也可以使用,文档在同一页面上。不知道哪个会更快,你可以做一些测试。如果您还想获取具有该标题的记录数,例如按选择中最常见的排序,那么group 绝对是要走的路。
    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2021-10-27
    • 2020-05-16
    • 2021-12-29
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多