我有Account模型,里面有这个方法:
public function getNameAttribute()
{
if(\App::getLocale() == 'en')
return $this->attributes['foreign_name'];
else
return $this->attributes['name'];
}
在索引页面中它正在工作。如果 locale 是enname 将是foreign_name,如下图:
但是我有搜索方法,这是代码:
public static function search_and_select($keyword)
{
$keyword = Helper::clean_keyword($keyword);
$data = Account::where
('number','like','%'.$keyword.'%')->
orWhere('name','like','%'.$keyword.'%')->
limit(30)->
get(['user_id','number','name']);
if(count($data) == 0)
return Helper::no_result();
return [$data,['number','name']];
}
如果我尝试搜索任何内容,我会收到此错误:
message: "Undefined index: foreign_name"
1: {,…}
class: "App\Models\Account"
file: "C:\xampp\htdocs\laravel\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php"
function: "getNameAttribute"
line: 465
type: "->"
2: {,…}
class: "Illuminate\Database\Eloquent\Model"
file: "C:\xampp\htdocs\laravel\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php"
function: "mutateAttribute"
line: 479
type: "->"
但如果我改变:
return $this->attributes['foreign_name'];
到
return $this->attributes['id']; // or any integer field in the accounts table
它工作没有问题。
在 Laravel 6 中,它和我一样工作,但现在我得到了这个错误。这里有什么帮助吗?
翻阅古今