1

「私がやりたいことは、マスター テーブルの集計フィールドを更新することです。」

3 つのテーブル、食事、注文、および order_items があります。食事 hasMany Order Order 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() を呼び出す方法と、挿入されたばかりの現在の food_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) を更新したいのですが、どの方向に進むべきかわかりません。アドバイスをお願いします。

4

1 に答える 1

1

食事IDの取得

create()関数はインスタンスを作成し、重要なことにそれを返します

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

したがって、この時点で を取得するに$meal_idは、モデルからプルする必要があります。

$meal_id = $meal->meal_id;

$order、およびの新しいインスタンスにも同じことが当てはまります$orderItem。それは理にかなっていますか?

于 2013-08-15T13:54:25.497 に答える