name_first $this->nam-6ren">
gpt4 book ai didi

php - 在 Eloquent 查询中使用 Laravel 模型方法

转载 作者:可可西里 更新时间:2023-11-01 14:01:00 24 4
gpt4 key购买 nike

这是针对 Laravel 5.2 的。我的用户模型中定义了如下方法:

public function name()
{
return "$this->name_first $this->name_last";
}

我正在尝试弄清楚如何将其用作查询的一部分,但由于一个明显的原因,这似乎是不可能的:数据库对该方法一无所知,这非常有意义.然而,我试图实现的概念在某些情况下是有意义的,所以我想看看是否有一种方法可以在 Eloquent 中自然地完成它。

这行不通,但它代表了我要实现的目标:

public function index(Request $request)
{
$query = new User();

if(Request::has('name')) {
$query = $query->where('name', 'LIKE', '%' . Request::input('name') . '%');
}

return $query->get();
}

简而言之,数据库只知道 name_firstname_last,但我希望能够在 name 而不存储它。也许存储连接的名称没什么大不了的,我应该这样做,但我也在努力学习。

最佳答案

我同意 Bogdan 的观点,名字或姓氏中有空格的问题使得对各个列的查询变得困难,所以这可能是要走的路。可以通过将其定义为自定义范围来增加代码重用: https://laravel.com/docs/5.2/eloquent#local-scopes

// class User
public function scopeOfFullNameLike($query, $fullName)
{
return $query->whereRaw('CONCAT(name_first, " ", name_last) LIKE "%?%"', [$fullName]);
}
// ...
User::ofFullNameLike('john doe')->get();

关于php - 在 Eloquent 查询中使用 Laravel 模型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35856456/

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