私にはBusiness
とProducts
という2つのモデルがあります。イベントリスナーから関連モデルを更新する最も効率的な方法
私は、製品の価格が変わるたびにイベントが発生します。イベントリスナーは、ビジネス製品の最小値と最大値を計算し、それらをビジネスモデル内に格納します(これは動的に行うことができますが、これは索引付けと検索に必要です)。私のイベントリスナーのハンドルで
私は、次のしている:
Property [min_cost] does not exist on this collection instance.
私の理解では、私がビジネスを行う必要があるでしょうということである。
public function handle(ProductModified $event)
{
$business = $event->product->business;
$aggregate_values = Product::join('business', 'product.business_id', '=', 'business.id')->where('business.business_id', '=', $business->id)->groupBy('business.business_id')->get(['product.business_id', DB::raw('max(product.price) as max_cost, min(product.price) as min_cost')]);
Log::info('aggregate values: ' . $aggregate_values);
$business->min_cost = $aggregate_values->min_cost;
$business->max_cost = $aggregate_values->max_cost;
$business->update;
}
コードを使用して、私は次のエラーが表示され、上記:find()を呼び出してモデルを開始し、モデルを更新します。はい、他のクエリを呼び出すので、これを行うより効率的な方法はありますか?さもなければ、誰かが私に関連するモデルを更新する正しい方法を教えてくれるでしょうか?