Laravel - 更改#appends数组内的对象属性字段

时间:2017-06-29 13:34:24

标签: php laravel

我正在尝试更改我作为json响应从函数返回的对象的属性。我不是想保存它并将其保存到DB,只是在我作为api响应发送之前更改它。这是我做的那段代码:

if ($item->post_title == '') {
     $post = $this->findPostId($item);
     $item->post_title = $post->post_title;
     $item->url = $post->guid;
     $item->slug = $post->slug;
     $item->setAttribute('post_id', $post->ID);
} 

我不明白为什么我能够更改post_title属性并设置属性post_id,但无法更改url和{{1属性。我检查了slugpost->guid属性,并获得了两个属性的值,但post->slug对象属性没有更改?

更新

刚刚意识到item字段位于模型的slug数组内,而不是#appends数组中。有没有办法为给定的对象更改它?

1 个答案:

答案 0 :(得分:2)

添加可填写的字段:

protected $fillable = ['url', 'slug']

然后你可以这样做:

$item->update(["post_title" => $post->post_title,
               "url" => $post->guid
               // etc...
]);

或者这样:

$item->post_title = $post->post_title;
$item->url = $post->guis;
$item->save();