【问题标题】:How can I use "like" functionality of Sql in cakephp code如何在 cakephp 代码中使用 Sql 的“like”功能
【发布时间】:2014-06-02 17:02:06
【问题描述】:

您好,我有一个代码,我在其中发送 URL 中的关键字,因此当我们单击链接时,它会转到我们的网站,因此我正在检查控制器中 URL 中的关键字值

$keyword= $this->params['url']['keyword'];

$dUsers = $this->Db_user->find(
    'all',
    array(
        'conditions'=>array('Db_user.area_of_expertise'=>$keyword),
        'order'=>array('Db_user.last_name'=>'asc')
    )
);

所以我的数据库具有如下关键字值:ab ab,bc,ca A B C D 所以这会发生什么,它只在结果中给出 ab 关键字,但我需要在 DB 中有我的关键字的所有 3 个结果 所以我试着让它像

'Db_user.area_of_expertise'=>'%keyword%'

也试过了:

Db_user.area_of_expertise'=>'%'.keyword.'%'

但是之后没有结果。

【问题讨论】:

  • 不熟悉 cakephp,但我想你需要多个 keywordsargument。为什么不简单地使用 OR 条件。例如,condition1 %keyword%condition2 %keyword% 等等。

标签: php sql cakephp


【解决方案1】:

只需在您的条件数组中使用:

'Db_user.area_of_expertise LIKE' => '%'.keyword.'%'

【讨论】:

【解决方案2】:

您可以使用查询方法进行自定义查询,请在下方找到参考 http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-query

【讨论】:

  • 当您可以按照@holt 的建议进行操作时,为什么还要使用query?如果您查看您提供的链接,则如果没有必要,则应避免使用查询
  • 您可以随心所欲地使用。这是进行自定义查询的一种方式,或者在您的情况下按照@Holt 的建议。
  • query 应该避免使用,因为它不会自动转义变量,这会迫使您添加额外的检查和函数调用来手动执行 Cake 直接为您提供的其他方法。
猜你喜欢
  • 1970-01-01
  • 2021-01-13
  • 2021-03-16
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 2017-01-30
  • 2020-08-29
  • 1970-01-01
相关资源
最近更新 更多