簡體   English   中英

為Eloquent集合創建一個新的空屬性

[英]Creating a new empty property to an Eloquent collection

我有一個循環瀏覽的集合,並嘗試添加具有空值的新屬性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屬性?

您可以將屬性附加到模型中,如下所示:

模型:

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

如果您不使用原始的$results加載datadata.authors在隨后的行中調用$results->data->authors data.authors $results->data->authors或類似的內容將重新查詢數據庫,並提取一個尚未復制的authors的新副本。被修改。

只需將$results更改為:

$results = Models\EloTable
        ::hydrate((array) $query)
        ->load(
            'extraction',
            'reference',
            'data',
            'data.authors',
        );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM