Проблема при вставке данных во многие ко многим отношениям с помощью функции attach () laravel - PullRequest
0 голосов
/ 31 октября 2018

у меня есть две таблицы (заказы и продукты) и одна сводная таблица (order_product). я сделал много-много отношений, используя их следующий код.

class Product extends Model{

   protected $fillable = ['name', 'price', 'is_iframe_product'];

   public function orders() {

      return $this->belongsToMany(Order::class);

   }   
}


class Order extends Model{

    public $guaded = ['id'];

    protected $fillable = ['is_iframe_order','price', 'status', 'address_id','user_id'];

    public function products () {

        return $this->belongsToMany(Product::class);

    }
}

Я использую следующий код для вставки записей в CheckoutController.php

 $Product = array('name' => $item['item_name'], "price" => $item['price'], "is_iframe_product" => "1");
 $saved = order()->products()->attach([$Product]);

но получаю эту ошибку:

исключение: "Symfony \ Component \ Debug \ Exception \ FatalThrowableError" файл: "C: \ wamp3 \ www \ jewellery \ jewellery \ app \ Http \ Controllers \ CheckoutController.php" линия: 63 сообщение: «Вызов неопределенной функции App \ Http \ Controllers \ order ()»

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Вот что нужно сделать:

  1. Сначала сохраните продукт в базе данных

    $product = Product::create(array('name' => $item['item_name'], "price" =>$item['price'], "is_iframe_product" => "1"));

  2. Затем прикрепите сохраненный продукт с кодом продукта id

    .

    $saved = $order->products()->attach($product->id);

0 голосов
/ 31 октября 2018

Что вам нужно сделать, это сначала создать заказ:

$order = new Order;
// set some attributes
$order->save();

Тогда вы можете прикрепить указанный товар:

$product = Product::find(1);

$order->products()->attach($product->getKey());

Если вы создаете продукт на лету:

$product = Product::create(array('name' => $item['item_name'], "price" =>$item['price'], "is_iframe_product" => "1"));

$order->products()->attach($product->getKey());
0 голосов
/ 31 октября 2018

Вы используете функцию: ... = order()->...

И ошибка говорит о том, что функция не существует: Call to undefined function ... order()

Вы имели в виду ссылку на переменную, как это? ... = $order->...

(я не вижу остальную часть вашего контроллера, поэтому не знаю, какие переменные вы используете)

...