2017-06-29 10 views
2

私は関数からjson応答として返すオブジェクトの属性を変更しようとしています。私はそれを保存してDBに保存しようとはせず、apiの応答として送信する前に変更するだけです。私はpost_title属性を変更し、属性post_idを設定することができますが、urlslug属性を変更することはできませんよ、なぜ#appends配列の内部にあるLaravel - 変更オブジェクト属性フィールド

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->guidpost->slugの両方の属性をチェックしましたが、両方の値が取得されますが、itemのオブジェクトプロパティは変更されません。

更新

ちょうどslugフィールドは、モデルの#appends配列の内部、およびない#attributes配列であることに気づきました。与えられたオブジェクトのためにそれを変更する方法はありますか?

+0

は、彼らが_guarded_属性だことは可能ですか? –

+0

私はlaravelに何も設定していませんが、私はWPデータベースからデータを取得していて、 '' 'dd($ item)' 'でオブジェクトを期待しています。' '#guarded:array:1 [ 0 =>「*」 – Leff

+0

あなたのモデルのプロパティはすべて投稿できますか? – TecBeast

答えて

1

入力可能なようにフィールドを追加します。

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(); 
+0

私はDBに保存しようとしていません、私はそれを応答として送信する前に変更しようとしています – Leff

関連する問題