我正在尝试更改我作为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属性。我检查了slug
和post->guid
属性,并获得了两个属性的值,但post->slug
对象属性没有更改?
更新
刚刚意识到item
字段位于模型的slug
数组内,而不是#appends
数组中。有没有办法为给定的对象更改它?
答案 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();