使用attach()函数laravel将数据插入多对多关系时出现问题



我有两个表(订单和产品(和一个数据透视表(订单产品(。我使用以下代码与他们建立了多对多的关系。

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\jewells\jewells \app\Http\Controllers\CheckoutController.php"线路:63消息:"调用未定义的函数App\Http\Controllers\order((">

以下是要做的:

  1. 首先将产品保存到数据库中

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

  2. 然后将保存的产品与产品的id连接

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

您需要做的是首先创建订单:

$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());

您使用的是函数:order()->...

错误表明该功能不存在:Call to undefined function ... order()

你的意思是引用一个变量吗,像这样?$order->...

如果你包括控制器的其余部分,那会很有帮助,因为我不知道你在使用什么变量。

此外,您的Order模型有一个拼写错误:$guaded应该是$guarded

相关内容

  • 没有找到相关文章

最新更新