Laravel在分页结果中附加值

时间:2019-02-07 07:44:16

标签: laravel append

我正在尝试在laravel中生成结果,我可以在结果中添加一个值。 例如,我正在使用以下查询:

  $variable = model::where('did', '=', $did)->where('name', 'LIKE', "%{$name}%")->orderBy('id', 'DESC')->paginate(6);

这正在产生结果:

total: 23,
per_page: 6,
current_page: 3,
last_page: 4,
next_page_url: "url/api/v1/model?did=b2d5c031ce301144&name=&page=4",
prev_page_url: "url/api/v1/model?did=b2d5c031ce301144&name=&page=2",
from: 13,
to: 18,
data: [
{
number: "9739693089",
message: "Message from Nilay 21",
type: "Received",
did: "b2d5c031ce301144",
},
 .....

我想在此结果中再添加一列,例如全名,在该结果中,我需要检查数字是否为...,然后全名应添加值x或不添加任何值。我曾尝试在模型中追加,但无法检查并添加值。

1 个答案:

答案 0 :(得分:1)

如已经建议的,最好的方法是使用Accessor

因此,您可以在模型中定义以下方法。

public function getFullNameAttribute()
{
    return $this->number ? 'fullname' : ''; 
}

...,然后您便可以使用

进行访问
$model->fullName; 

如果出于某种原因您无法执行此操作,则可以选择另一种方法。 由于分页结果本质上是Collection,因此您可以在其上进行映射并添加所需的字段。

$variable = Model::where('did', '=', $did)
    ->where('name', 'LIKE', "%{$name}%")
    ->orderBy('id', 'DESC')
    ->paginate(6)
    ->map(function($model) {
        // You can do your check here
        // for example if($model->number) {} 
        $model->fullName = 'test';
    });