2015-11-09 3 views
1

Я пытаюсь вставить изображение продукта в дочернюю таблицу с именем product_images, но он пытается найти столбец «путь» в таблице продуктов.Вставить в дочерний стол

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'path' in 'field list' 

Вот как у меня установлены контроллеры/модели.

МОДЕЛЬ ПРОДУКТА

public function category() 
{ 
    return $this->belongsTo('App\Category'); 
} 

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

ИЗОБРАЖЕНИЯ ПРОДУКТА

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

CONTROLLER ПРОДУКТ

$product = new Product(); $product->category_id = $request->category_id; $product->name = $request->name; $product->price = $request->price; 

//upload image 
if ($request->hasFile('image')) { 
    //validate 
    $this->validate($request, [ 
     'image' => 'mimes:jpeg,bmp,png' 
    ]); 

    $image = $request->image; 
    $filename = time() . '-' . $image->getClientOriginalExtension(); 
    $path = public_path('img/products/' . $filename); 
    Image::make($image->getRealPath())->resize(468, 249)->save($path); 
    $product->path = 'img/products/' . $filename; 
} 

$product->images()->save($product); 
+1

Путь в таблице изображений, правильно? '$ product-> images-> path' – kotapeter

+0

Вы устанавливаете' $ product-> path' во 2-й в последнюю строку, поэтому он пытается сохранить столбец «путь» в таблице «продукты» – andrewtweber

ответ

0

вы должны использовать

$product->images->path = 'img/products/' . $filename; 

вы можете использовать кнопочный метод, чтобы сохранить модель и все ее отношений

$product->push(); 
+0

Привет. Я пробовал это, но он не вставлялся в базу данных. Изображение было сохранено, и продукт был добавлен, но метод push не вставлялся в таблицу product_images. – Codebuilder

+0

похоже, что у вас есть отношение «многие ко многим» между таблицей продуктов и изображений. Если это так, вам нужно будет настроить модели, как указано здесь. http://laravel.com/docs/5.1/eloquent-relationships#many-to-many – elixir

+0

О, я вижу. Я думал, что он создан как один для многих? Что делать, если мне не нужна сводная таблица? но просто привяжите дочернюю таблицу к родительской таблице с именем столбца product_id – Codebuilder

0

Оказывается, мне нужно сделать это: $ IMAGE = новый ProductImage();

, а затем $ product-> images() -> save ($ image);

Смежные вопросы