как объединить две таблицы в базе данных Laravel - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь объединить две таблицы (таблица продуктов и таблица изображений), поэтому в таблице продуктов у каждого продукта есть несколько изображений (хранятся в строке с именем image), поэтому я хочу отображать изображения каждого продукта в images table. В таблице изображений у меня есть внешний ключ с именем product_id ссылки (id) в таблице продуктов. Проблема в том, что он не может хранить изображения в таблице изображений (он сохраняет изображения в строке (изображения) в таблице продуктов). Как мне это решить?

Коды

product.php

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

Image.php

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

Контроллер

 public function store(Request $request) 
 { 

$Input=$request->all();
$image=array();
if($files=$request->file('image')){
foreach($files as $file){
    $name=$file->getClientOriginalName();
    $file->move('images',$name);
    $image[]=$name;
  }
  } 
 product::create(array_merge($Input,
 [
 'image' => json_encode($image),

 ])); 
return redirect()->back(); 

}

Любая помощь будет оценена.

1 Ответ

1 голос
/ 30 июня 2019

Если вы пытаетесь сохранить изображение в таблицу изображений, и вместо этого вы «сохраняете изображения в строке (изображении) в таблице продуктов» - вы сохраняете не тот элемент.Похоже, у вас правильная структура - от одного ко многим в ваших моделях.Просто нужно сохранить Изображение , а не Продукт

Что-то как этот исправит эту проблему:

Image::create(['whateverYouNeedToSave', 
              'product_id'=>$product_id,      <-- Connect the product here, within the image
              'etc']);

На самом деле это можно сделать, создав Product , а затем сохранив Images как отношение, но это может быть не самым чистым / простым способом создать это - предлагаю начатьс сохранением Image , поскольку у вас их будет много, а не один Product за раз.Затем, после того, как это сработает и станет понятным / удобным, вы можете попробовать его более «продвинутым» способом, если вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...