如何从不同的表中保存已有ID的日期

时间:2017-07-12 08:32:26

标签: laravel

我有一个我想存储的表调用订单,但是我与customer表建立了关系,因为我需要customer_id,但现在我收到了这个错误:

  

customers_id没有默认值

这是Order模型中的关系:

public function customer()

{
    return $this->belongsTo(Customer::class, 'customer_id', 'id');
}

Customer型号:

public function order()
{
    return $this->hasMany(Order::class, 'customers_id');
}

控制器:

public function store(Request $request)
{

    $orderDate = $request->only(['shippingAddress', 'receivingAddress','status']);
    $order = Order::create($orderDate);

    return redirect()->route('order.index',compact('order'));
}

上述代码有什么问题?

2 个答案:

答案 0 :(得分:0)

这意味着customer_id的默认值是什么?

在这种情况下:我发现您没有customer_id来创建订单。

如果客户登录并下订单,您可以使用它来指定customer_id

$orderDate['customer_id'] = Auth::user()->id;

答案 1 :(得分:0)

错误是因为当您保存订单时,customers_id列为空。如果您没有将列标记为可空,并且在插入新记录时未传递值,则DBMS会抱怨该列没有默认值。

您必须在保存订单之前设置客户。

public function store(Request $request)
{
    $orderDate = $request->only(['shippingAddress', 'receivingAddress','status']);

    // Get the customer
    $customer = $request->user();

    $orderDate['customer_id'] = $customer->id
    $order = Order::create($orderDate);
    // or
    // Using the relation
    // $order = $customer->orders()->save(new Order($orderDate));

    return redirect()->route('order.index',compact('order'));
}