我正在尝试在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或不添加任何值。我曾尝试在模型中追加,但无法检查并添加值。
答案 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';
});