获取laravel

时间:2018-01-13 07:27:00

标签: php laravel

我想复制我的订单,并且orderstatus_id列会获得订单状态ID,而重复订单我想要将订单状态ID从任何地方更改为特定ID。

需要更多解释吗?

我的订单状态为completed且标识为11,我希望将其复制并在复制的订单状态中变为waiting payment,即1。在这个过程中,我想动态地获取该ID,因为我不知道将来id会保持不变。

所以我的代码如下:

//re-order
  public function reorder($id)
    {
      $status = Orderstatus::where('title', 'Witing Payment')->select('id')->get();
      $order = Order::findOrFail($id);
      $newOrder = $order->replicate();
      $newOrder->ordernu = mt_rand(1000000000, 9999999999);
      $newOrder->orderstatus_id = $status;
      $newOrder->payment_id = '';
      $newOrder->save();

      return redirect()->back()
          ->with('info',
           'Order Stored');
    }

当我点击复制链接时,我收到此错误:

Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails

我需要的是修复这条线,(我猜)

$status = Orderstatus::where('title', 'Witing Payment')->select('id')->get();

感谢。

更新

我的订单表的截图(因为您看到我的所有整数列都可以为空)

screen

1 个答案:

答案 0 :(得分:1)

您收到错误是因为某些外键为空。看起来像是$table->string('payment_id')->nullable(); 。如果要允许它为空,则需要在迁移中使其可为空:

Orderstatus::where('title', 'Witing Payment')->select('id')->get();

另外,改变这个:

Orderstatus::where('title', 'Witing Payment')->value('id');

要:

val classType = schema.field.type
classType match {
  case _: Class[String] => println("String")
  case _: Class[_] => println("Others")