2017-02-24 101 views
1

我有一个插入有关订单的详细信息的问题。雄辩laravel模型空id编号

型号:

class Order extends Model 
{ 
    protected $fillable = ['user_id','name','surname','fathers_name','phone_number','city','post_office','comment']; 

    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 

    public function orderDetails() 
    { 
     return $this->hasMany('App\OrderDetails'); 
    } 

} 

class OrderDetails extends Model 
{ 
    protected $fillable = ['order_id','product_id','amount']; 

    public function order() 
    { 
     return $this->belongsTo('App\Order'); 
    } 


    public function product() 
    { 
     return $this->hasMany('App\Product'); 

    } 


} 

表:

订单: ID user_ID的 p_number 城市 状态 ...

个ORDER_DETAILS: ID ORDER_ID PROD_ID 量 ...

控制器:

$data = $request->except('_token','submit'); 

$为了=新订单(); $ order-> create($ data);

$order_details = new OrderDetails(); 

    $cart_content = Cart::content(); 
    $order_content = []; 



    foreach($cart_content as $key=>$cart_item) { 
     $order_content[$key]['order_id'] = $order->id; 
     $order_content[$key]['id'] = $cart_item->id; 
     $order_content[$key]['qty'] = $cart_item->qty; 
     $order_content[$key]['price'] = $cart_item->price; 
    } 

    dd($order_content); 

     /* 
    foreach($order_content as $order_item) 
    { 
     $order_details->create($order_item); 

    } 

     */ 

所以,当我打印$ order_content,即时得到“ORDER_ID”空,我应该如何正确地得到以填补其ORDER_DETAILS id字段?

我到底应该得到这样的事情:

Orders: 
1 
1 
+12345678 
NY 
processing 
... 

Order_details: 
1 
1 
2 
5 
----------- 
2 
1 
3 
4 
----------- 
3 
1 
8 
2 
----------- 

回答

0

您需要保存结果到一个变量:

$order = (new Order)->create($data); 

或者:

$order = Order::create($data); 
+0

Im做它在我代码,看上面,我做了大胆 – Batmannn

+0

@Batmannn不,你正在做'$ order = new Order(); $ order-> create($ data);'你的代码会在'create()'后面返回一个空模型。我的答案中的代码将返回创建的模型。正如我在另一个问题中所说的,你的架构不好。您应该了解多对多关系,并将其用于Order和Model产品模型,并去掉OrderDetails模型。 –