【问题标题】:Laravel How to concat with Full name First name Middle Initial Last name [duplicate]Laravel如何与全名连接名字中间名首字母姓氏[重复]
【发布时间】:2019-09-22 19:45:18
【问题描述】:

全名 concat 的正确方法是什么 它在表中的三列 resident_fname resident_mi resident_lname

$resident = Resident::whereRAW("Concat(resident_fname,'',resident_mi,'',resident_lname) LIKE '%{$request->input('reservation_name')}%'")
        ->first();

【问题讨论】:

  • 答案只有 fname 和 lname 三列怎么样?包括中间首字母以使其成为全名?
  • 可以使用任意多个参数调用 SQL CONCAT 函数。
  • @ginabotlola 你想在这里用 concat 做什么?

标签: php laravel


【解决方案1】:

在模型中创建函数的更好主意

class Resident extends Model{
    public function name(){
        return $this->first_name . ' ' . $this->middle_name . ' ' . $this->last_name;
    }
}

你可以访问它

$resident = Resident::find(1);
$resident->name()

【讨论】:

  • 我没有投反对票,但使用纯 sql 来完成这项任务似乎更干净(开销更少)。
  • @mickmackusa 是首选,如果你要使用一个函数,你可以像模型属性一样访问它,那你为什么要写一个查询呢?我参与过各种项目,eloquent 几乎可以胜任所有工作,更有条理,易于维护,所以我个人不会在我的应用程序中使用任何原始查询。
  • 哦,我明白了。我只是想猜测为什么没有评论的投票者会打你。
  • @mickmackusa 我想这是因为他们在想我为什么要回答一个标记为重复的问题,你猜怎么着?
  • 不,反对票(和中和赞成票)是在我敲定之前。无论如何,我的欺骗链接包含您的建议(或多或少)。
【解决方案2】:

我们需要在原始查询中使用 CONCAT_WS()。但也要了解 CONCAT()。那么为什么我们使用 CONCAT_WS() 呢?

CONCAT() 和 CONCAT_WS() 函数都用于连接两个或多个字符串,但它们之间的基本区别是 CONCAT_WS() 函数可以进行连接以及字符串之间的分隔符,而在 CONCAT() 函数中是没有分隔符的概念。

示例:

mysql> Select CONCAT('Akash','is','a','good','developer') AS 'Example of CONCAT()';

+---------------------+
| Example of CONCAT() |
+---------------------+
| Akashisagooddeveloper   |
+---------------------+

1 row in set (0.00 sec)

mysql> Select CONCAT_WS(' ','Akash','is','a','good','developer') AS 'Example of CONCAT_WS()';

+------------------------+
| Example of CONCAT_WS() |
+------------------------+
| Akash is a good developer  |
+------------------------+

1 row in set (0.00 sec)
$resident = Resident::where(DB::raw('CONCAT_WS(" ", resident_fname, resident_mi, resident_lname)'), 'like', $request->input('reservation_name'))->first();

【讨论】:

  • 纯代码答案在 Stackoverflow 上的价值很低,因为它们对教育/授权成千上万的未来研究人员几乎没有作用。
  • 当您重复建议的重复链接的建议(在您发布答案之前建议)时,您不应该回答 - 您应该标记/投票关闭。
  • 请在您的代码中添加一些解释,以便其他人可以从中学习
  • @NicoHaase 我按照你的建议添加了一些解释
猜你喜欢
  • 2016-07-12
  • 2013-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多