2017-08-24 40 views
2

我有這個字段laravel形式:用新值替換陣列中的鍵值

<form> 
<input type='text' name="title"> 
<input type='file' name="files"> 
</form> 

In server side, I done some proccess on files. 

$imagesUrl = $this->uploadImages($request->file('files')); 

DD($ imagesUrl):

array:2 [▼ 
    "images" => array:4 [▼ 
    "original" => "/upload/images/2017/10453717_202487510125261_45876946_n.jpg" 
    300 => "/upload/images/2017/300_10453717_202487510125261_45876946_n.jpg" 
    600 => "/upload/images/2017/600_10453717_202487510125261_45876946_n.jpg" 
    900 => "/upload/images/2017/900_10453717_202487510125261_45876946_n.jpg" 
    ] 

    "thumb" => "/upload/images/2017/300_10453717_202487510125261_45876946_n.jpg" 
] 

現在我想更換$imagesUrl$request->file('files')並在數據庫中插入新記錄。 我試試這個:

auth()->user()->article()->create(array_merge($request->all() , [ 'files' => $imagesUrl])); 

但我得到這個錯誤:

(1/1) ErrorException Array to string conversion

什麼是我錯了嗎?

+1

這個代碼另一條線路上執行此部分和VAR傾倒。 'array_merge($ request-> all(),['files'=> $ imagesUrl])''。如果這樣會產生一個錯誤,var dump $ request-> all()和$ imagesUrl來獲得更好的想法 – delboy1978uk

+0

我做到了。 array_merge工作正常。 'files'的值是一個數組..所以它重新排列數組到字符串錯誤...但是根據laravel doc,它必須插入它。 – Ali

回答

0

答:我在加入莫代爾

protected $casts = [ 
    'files' => 'array' 
]; 
0

你應該試試這個:

$imagesUrl = serialize($imagesUrl); 

$arrInsert = ['title'=> $request->title,'files'=>$imagesUrl]; 

auth()->user()->article()->create($arrInsert); 

,並再次檢索,然後反序列化

$imagesUrl = unserialize($raw->files); 

希望這對你的工作!