0

我有以下 MySQL 表:

cases
  id            INT
  diagnosis     TEXT
  description   TEXT

这在 Laravel 中由LibraryCase模型表示。

当用户输入搜索词时,我会使用以下内容获得匹配的案例:

// $user_query is the (escaped and purified) user input
$matches = LibraryCase::where('diagnosis', 'LIKE', $user_query)
                      ->or_where('description', LIKE, $user_query)
                      ->paginate(10);

假设我有一个案例,描述是“刺猬索尼克”。如果用户输入 'sonic' 或 'hedgehog' 则返回大小写。如果用户输入“sonic Hedgehog”,则不返回任何内容。这是有道理的,但我不知道如何拆分$user_query成单个单词,然后将每个单词添加到我对 LibraryCase 的查询中?

我是在用鼹鼠山造山吗?似乎这是一件经常发生的事情......

4

1 回答 1

0

像这样的东西可能会起作用:

$matches = LibraryCase::where('id','>',0);

$user_query = "sonic hedgehog";

foreach(explode(' ', $user_query) as $word)
{
    $matches = $matches->or_where('diagnosis', 'LIKE', $word);
    $matches = $matches->or_where('description', 'LIKE', $word);
}

return $matches->paginate(10);
于 2013-06-14T13:27:37.947 回答