请帮忙,如何在Laravel 4中更新主表

时间:2013-08-15 12:11:07

标签: laravel laravel-4 eloquent

“我想要做的是更新主表的摘要字段。”

我有3张桌子,餐点,订单和order_items。 用餐有很多订单 订单hasMany OrderItem

class Meal extends Eloquent {
    protected $table = 'meals';
    protected $primaryKey = 'id';

    public function orders() {
        return $this->hasMany('Order', 'meal_id');
    }
}

class Order extends Eloquent {
    protected $table = 'orders';
    protected $primaryKey = 'id';

    public function meal() {
        return $this->belongsTo('Meal', 'meal_id');
    }

    public function orderItems() {
        return $this->hasMany('OrderItem', 'order_id');
    }
}

class OrderItem extends Eloquent {
    protected $table = 'order_items';
    protected $primaryKey = 'id';

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

在我的控制器中,我使用质量赋值来插入3个表

$meal = Meal::create($mealData);
$order = Order::create($orderData);
$orderItem = OrderItem::create($orderItemData);
...
//I don't know what to do next

如果我在膳食模型中有一个功能,例如updateSummary(),在插入这3个表之后如何调用updateSummary(),以及如何引用当前正在插入的meal_id ???

这就是我一直在做的事情

public function updateSummary() {
  //using relationship
  $orders = $this->orders();
  //then use $orders to do some calculation
}

我可以从我的控制器中调用它吗

//after insert those 3 tables
$meal->updateSummary();

正如我上面提到的,我想要的是在将数据插入子表后更新主表(膳食)的汇总字段(amount_sum),但我不知道要去哪个方向,请指教,谢谢

1 个答案:

答案 0 :(得分:1)

获取meal_id

create()函数,creates the instance and also, importantly, returns it

$meal = Meal::create($mealData);

所以,在这一点上,要获得$meal_id,您只需要从模型中提取它:

$meal_id = $meal->meal_id;

这同样适用于$order$orderItem的新实例。这有意义吗?