我有一个循环浏览的集合,并尝试添加一个具有空值的新属性suffix
。
$results = Models\EloTable
::hydrate((array) $query)
->load(
'extraction',
'reference'
);
foreach ($results as $result) {
foreach ($result->data->authors as $author) {
$author->suffix = '';
}
}
当前,每个$author
都有两个属性
{
lastName: "Lastname",
firstName: "Firstname"
}
如果我在第一次迭代后dd($author);
,我将得到
{
lastName: "Lastname",
firstName: "Firstname",
suffix: ""
}
但是,如果我在两个dd($results);
循环之后foreach
,它将不会持续添加空的suffix
属性。
如何更改集合以保留suffix
属性?
答案 0 :(得分:0)
您可以将属性添加到这样的模型中:
型号:
protected $appends = ['suffix'];
public function getSuffixAttribute()
{
return null;
}
文档:
https://laravel.com/docs/5.8/eloquent-mutators
https://laravel.com/docs/5.8/eloquent-serialization#appending-values-to-json
答案 1 :(得分:0)
如果您没有在原始data
中加载data.authors
和$results
,然后在下一行调用$results->data->authors
或类似的方法,将重新查询数据库,拉尚未修改的authors
的新副本。
只需将$results
更改为:
$results = Models\EloTable
::hydrate((array) $query)
->load(
'extraction',
'reference',
'data',
'data.authors',
);