Laravel - 采用变异属性

D.M*_*ski 9 php laravel eloquent

我遇到了一个问题,这只是一个小小的不便,但......

基本上我需要的是一个选择框的关联数组.通常,这可以使用该pluck()功能来实现.

问题是,我想用作'text'的属性实际上并不存在于数据库中,它是一个将两个字段合并为一个的mutator.

public function getNameAttribute() {
    return $this->first_name . ' ' . $this->last_name;
}
Run Code Online (Sandbox Code Playgroud)

我知道在将模型转换为数组时,将'name'字段添加到$appends模型上的数组将包括该字段,但是这似乎不适用于pluck()

有没有一种简单的方法来实现我想要的?我缺少的功能或声明?还有什么比手动循环集合并创建自己的关联数组更有说服力?

更新 我是个白痴.我正在传递一个数组来代替两个参数.显然采用该$appends属性.请注意,这仅适用于使用集合pluck() 而非查询构建器'name'

谢谢你的帮助,伙计们.

小智 16

我正在寻找一个答案,结果得到了不同的结果,所以我想我会分享.

User::get()->pluck('name');
Run Code Online (Sandbox Code Playgroud)

如果先获取对象,则可以访问mutated属性.

  • 这应该是恕我直言的答案 (3认同)

bis*_*hop 7

您可以将属性动态附加到集合中的对象:

$users->each(function ($model) { $model->setAppends(['name']); });
$users->pluck('name');
Run Code Online (Sandbox Code Playgroud)

这有一个很好的优点,即不需要'name'始终成为数组数据的一部分,同时允许您的集合及时使用name