Laravel 5:将图像URL作为数组插入列中

时间:2016-07-25 01:24:19

标签: php sql arrays file laravel-5

我正在使用Laravel 5构建一个应用程序,我想在一个用逗号分隔的数组中插入几个图像URL。这将放在数据库的一列中。这些文件已成功上传到我的AWS S3存储桶,但它现在是数据库的输入。我尝试使用Laravel的array_add助手,但是我得到一个错误,说明我缺少参数2.我想知道如何才能实现这一点。我目前的替代解决方案是使用post id放置图像并使用关系将它们连接在一起。

供参考:我打算放置图像的列是picgallery,插入是使用$ newproperty ['picgallery']变量完成的。

int

1 个答案:

答案 0 :(得分:0)

array_add需要3个参数

$ array = array_add($ array,'key','value'); (https://laravel.com/docs/5.1/helpers#method-array-add

例如

$testArray = array('key1' => 'value1');
$testArray = array_add($testArray, 'key2', 'value2');

你会得到

[
     "key1" => "value1",
     "key2" => "value2",
]

在这种情况下,您可能无法使用array_add。

我认为为了解决您的问题,请将您的foreach循环修改为类似

//storage into AWS 
// init the new array here
$array = [];
foreach ($files as $file) { 
       $uploadedFile = $file;
       $upFileName = time() . '.' . $uploadedFile->getClientOriginalName(); 
       $filename = strtolower($upFileName); 

       $s3 = \Storage::disk('s3'); 
       $filePath = 'properties/' . $rando . '/' . $filename;

       $s3->put($filePath, file_get_contents($uploadedFile), 'public');

       $propicurl = 'https://s3-ap-southeast-1.amazonaws.com/cebuproperties/' . $filePath; 

       // change how to use array_add
       array_push($array, array('img' => $propicurl));
       // remove the below line
       // $array = array_add($array, 'img', $propicurl);
} 

// move this assignment out of foreach loop
$newproperty['picgallery'] = $array;