【问题标题】:How to search a string in database tables and retrieve matched columns name in laravel如何在数据库表中搜索字符串并在laravel中检索匹配的列名
【发布时间】:2020-02-26 01:03:34
【问题描述】:

我有一个表有下面的列。 标题,副标题,系列,模糊,keyword_one,keyword_two,keyword_three,keyword_four,keyword_five,keyword_six,keyword_seven,

现在我想搜索一个“单词”……或一个字符串,然后检索两件事(1)标题和(2)在其中找到该字符串或单词的列……

【问题讨论】:

  • 或者简单地使用 ->where('name', 'LIKE', "%{$searchTerm}%") ->orWhere('email', 'LIKE', "%{$searchTerm} %")
  • 如果没有提供任何代码示例,方法是创建雄辩的查询,该查询将找到keyword_* 列之一与“单词”匹配的所有行。您可以使用@MahmoudGad 提供的->where()->orWhere() 示例。获得结果集合后,您可以在结果集合上使用 map() 以仅返回您需要的属性。

标签: database laravel eloquent laravel-5.8


【解决方案1】:

可能不是最佳答案,但您可以这样做:

DB::table('table')->selectRaw('`title`, @word:="%word_to_search%", CASE WHEN `subtitle` LIKE @word THEN 'subtitle' WHEN `series` LIKE @word THEN 'series' WHEN `blurs` LIKE @word THEN 'blurs' WHEN `keyword_one` LIKE @word THEN 'keyword_one' WHEN `keyword_two` LIKE @word THEN 'keyword_two' WHEN `keyword_three` LIKE @word THEN 'keyword_three' WHEN `keyword_four` LIKE @word THEN 'keyword_four' WHEN `keyword_five` LIKE @word THEN 'keyword_five' WHEN `keyword_six` LIKE @word THEN 'keyword_six' WHEN `keyword_seven` LIKE @word THEN 'keyword_seven' END AS `column`')->get();

为了简化,我使用了@word 变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多