我基本上有这个:
foreach ($request->input('images', []) as $imagesData) {
$images = new ScenesImages($imagesData);
$images->product()->associate($product);
$images->save();
}
这样可以在我的外键中正确保存图像的名称,但如何动态保护图像路径。
如果我dd($ product);
我明白了:
> #attributes: array:2 [▼
> "name" => "test"
> "product_id" => 7 ]
但没有img(路径)
在循环中创建html的Javascript:
for(var i = 1; i<slider.value; i++) {
$('#sliderAppendSz').append(
'<div class=\"form-group\">'
+'<div class=\"fileinput fileinput-new\" data-provides=\"fileinput\">'
+'<div class=\"input-group\">'
+'<input name=\"images['+i+'][name]\" type=\"text\">'
+'<span class=\"input-group-btn\">'
+'<span class=\"btn btn-primary btn-file\">'
+'<input name=\"images['+i+'][scenes_images]\" type=\"file\" multiple class=\"ImageInput\" accept=\"file_extension/*\">'
+'</span>'
+'</span>'
+'</div>'
+'</div>');
}
我的场景模特:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ScenesImages extends Model
{
protected $table = 'scenes_images';
protected $fillable = ['product_id', 'name', 'scenes_images'];
public function product()
{
return $this->belongsTo('App\Product', 'product_id');
}
}
这是我的产品型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
public static $projects = 'C:\\xampp\\htdocs\\MyProject\\Web';
protected $table = 'products';
protected $fillable = [
'scenes_images'
];
public static $rules = [
'scenes_images' => 'max:500',
];
public function scenesImages()
{
return $this->hasMany('App\ScenesImages');
}
}
编辑:
好吧我想我得到了它我必须添加这个,因为我只是在我添加一个foreach文件之前得到了输入,我现在的问题是,如果以某种方式可以将两个foreach循环加到一个像$ request - &gt;文件和输入。
foreach ($request->file('images', []) as $imagesData) {
$images = new ScenesImages($imagesData);
$images->product()->associate($product);
$images->save();
}
答案 0 :(得分:0)
如果您向我们展示有关模型ScenesImages的更多信息可能会更好,否则您可能会有这样的事情。
foreach ($request->input('images', []) as $imagesData) {
$images = new ScenesImages($imagesData);
$images->product()->associate($product);
$images->path = $your_path
$images->save();
}
当然,您需要变量$your_path
以及保存图像的路径,或者它是否是来自Amazon S3的网址,但正如我所说,我们需要有关您的模型结构的更多信息。
答案 1 :(得分:0)
不要忘记上传图片,将其保存到服务器
foreach ($request->input('images', []) as $imagesData)
{
$images = new ScenesImages($imagesData);
$images->product()->associate($product);
$destinationPath = 'uploads'; // upload path
$extension = $imagesData->getClientOriginalExtension(); // getting image extension
$fileName = $imagesData->getClientOriginalName()'.'.$extension; // renameing image
$imagesData->move($destinationPath, $fileName); // uploading file to given path
$images->path = $destinationPath.'/'.$fileName;
$images->save();
}
答案 2 :(得分:0)
我在您的代码中遇到的一些问题:
我对$request->file('images')
返回的内容感到有些困惑。如果它是UploadedFile
对象的数组,那么我很确定你做错了。在上传了保存ScenesImages
模型时要使用的文件路径后,您甚至无法将图像上传到服务器。
您的代码在这里:
$images = new ScenesImages($imagesData);
正在新建一个ScenesImages
对象并向其传递一个变量,该变量需要满足模型正确创建的必需属性,其属性为:name
,{{1}根据你的问题代码。如果你不能正常工作。你应该传递一个关联数组,其中的键与模型所具有的属性相匹配。
scenes_images
,然后将您的模型设为单数:scene_images
考虑像这样做你的代码:
SceneImage