我有两个表(订单和产品(和一个数据透视表(订单产品(。我使用以下代码与他们建立了多对多的关系。
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((">
以下是要做的:
-
首先将产品保存到数据库中
$product = Product::create(array('name' => $item['item_name'], "price" =>$item['price'], "is_iframe_product" => "1"));
-
然后将保存的产品与产品的
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
。