文章与图片之间的关系


Laravel 5 relationsheep between article and images

嗨,我是Laravel的新手,我有这个简单的问题。我有应用程序,用户可以创建一些文章,也可以上传主图像的文章,它的工作完美。我也想给用户的可能性,为他的文章上传更多的图像。我已经创建了模型(ArticleImage),并添加了Article和ArticleImage之间的关系。并且我创建了表单字段,用于在文章表单内上传多个文件。但我不知道现在如何告诉laravel保存这些路径的所有名称到数据库中,并在公共/images文件夹中存储图像,然后在视图中我可以使用这些图像。我现在是否需要创建ArticleImage控制器和内部控制器来编写该函数,或者我应该在Article控制器内部存储函数中这样做。谢谢每一次的帮助。这里是链接到github-repo(https://github.com/Dabizlja/Laravel-blog)

如果表单以数组形式发送输入

<input name="picures[]" />

在你的ArticleController on save中,你可以使用json类型

$files=[];
$pictures = $request['pictures'];
if (count($pictures) > 0 && $pictures[0] != null) {  
        foreach ($pictures as $picture) { 
            $validator = Validator::make([$picture], ['mimes:jpeg,jpg,bmp,png']);
            if ($validator->fails()) {
                return $validator->messages()->all();
            }
            $picture->move(public_path() . '/images/', $picture->getClientOriginalName());
            array_push($files, $picture->getClientOriginalName());
        }
    }
   $article->images = json_encode($files);

让它回到视图

<?php   
  foreach ( $images as $file) {
    echo  '<img src="'asset('/images/' . $file)'"/>';
  }
 ?>

在你的控制器上编辑记得解码json

$files = json_decode($article->images);

要删除一张图片,你必须遍历数组并以同样的方式删除它。

可能

$article->articleImages()->saveMany($images);

希望这能解决你的问题