gpt4 book ai didi

laravel - “Where like”子句使用 2 列的串联值与 Eloquent

转载 作者:行者123 更新时间:2023-12-02 10:54:23 27 4
gpt4 key购买 nike

我有一个查询,要在多个列中搜索某个术语,其中一列必须是全名。

我已将姓名和姓氏分开,因此在搜索时必须连接这两个值。

我现在只搜索名字。我如何将连接添加到姓氏?我正在调查突变体,但我不知道这是否是正确的方法。

public function search($searchQuery)
{
$search = "%{$searchQuery}%";

return Order::with('customer')
->orWhereHas('customer', function($query) use ($search){
$query->where('dni', 'like', $search);
})
->orWhereHas('customer', function($query) use ($search){
$query->where('name', 'like', $search);
})
->orWhere('code', 'like', $search)
->paginate(15);
}

最佳答案

更改器(mutator)不是这里的方法,因为它们不会影响您正在构建的查询,它们仅用于存储在模型中的值。但是您可以使用以下条件:

$query->where(DB::raw('CONCAT_WS(" ", name, lastname)'), 'like', $search);

MySQL函数CONCAT_WS将连接两个字符串,将它们与作为第一个参数传递的字符串粘合在一起。因此,在本例中,如果名字是 John,姓氏是 Smith,则条件将被评估为此 “John Smith”,如“%query%” “DB:raw 用于避免条件的第一部分被转义,这会在串联语句周围放置反引号。

关于laravel - “Where like”子句使用 2 列的串联值与 Eloquent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com