Как сохранить несколько изображений в базе данных в Laravel? - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь сохранить несколько изображений товаров в базе данных.Я создал таблицу изображений и установил связь с таблицей продуктов.

Контроллер

public function store(Request $request)
{
    $formInput = $request->all();
    $image = array();
    if ($files = $request->file('image')) {
        foreach ($files as $file) {
            $name = $file->getClientOriginalName();
            $file->move('images', $name);
            $image[] = $name;

        }
    }

    //dd($formInput);

    Product::create(array_merge($formInput,
        [
            // 'product_id'=>$product->id,
            'image' => 'what to put here',
            'seller_id' => Auth::user()->id,
        ]));

    return redirect()->back();
} 

Изображение модели

class Image extends Model
{
    protected $table = 'images';
    protected $fillable = ['product_id', 'image'];

    public function product()
    {
        return $this->belongsTo('App\Product', 'product_id');
    }
}

Модель продукта

class product extends Model
{
    protected $table = 'products';
    protected $primaryKey = 'id';
    protected $fillable = ['seller_id', 'pro_name', 'pro_price', 'pro_info', 'stock', 'category_id'];

    public function images()
    {
        return $this->hasMany('App\Image', 'product_id');
    }
}

Когда я dd($formInput) вижу все детали, в том числе изображения, но как мне отправить их в базу данных?Изображения к таблице изображений и сведения о продуктах к таблице продуктов.

1 Ответ

0 голосов
/ 01 июля 2019

Вы должны использовать вставку изображений в таблицу изображений, используя Image :: create (), а в таблице изображений вы должны сделать внешний ключ (product_id) для идентификатора продукта.Там не будет записи в таблице продуктов относительно изображений.Просто создайте продукты с обычными полями, не включая детали изображения.

public function store(Request $request) 
{
$formInput = $request->all();
$image = array();
if ($files = $request->file('image')) {
    foreach ($files as $file) {
        $name = $file->getClientOriginalName();
        $file->move('images', $name);
        $image[] = $name;

    }
}

//dd($formInput);
Image::createMany([
'product_id': //'value of id': Same for all images of this product
],[...])

Product::create(array_merge($formInput,
    [
        // 'product_id'=>$product->id,
        // 'image' => 'what to put here',
        'seller_id' => Auth::user()->id,
        //Other Fields' details... 
    ]));

return redirect()->back();
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...