問題:モデルにアクセスするたびに、モデルの熱心な負荷($appends
に設定)がロードされます。同じモデルが要求されている場合も同じですwith()
他のモデルの関係。私が期待しているのは、relationからのクエリ中に$appends
属性のロードを避けることです。詳細は以下を参照してください。Laravelのリレーションモデルの熱心な負荷を防ぎます
モデル1
<?php
Class Shop extends Eloquent{
protected $appends = [];
public function products(){
return $this->hasMany(App\Product::class);
}
}
モデル2($内の属性が付加しています)
<?php
Class Product extends Eloquent{
protected $appends = ['defaultVariant'];
public function variants(){
return $this->hasMany(App\Variant::class);
}
public function getDefaultVariantAttribute(){
//do something to check default variant
}
}
<?php
Class Variant extends Eloquent{
protected $appends = ['var1', 'var2', 'var3'];
}
<?php
//imagine a query like below
$shop = App\Shop::with('products')->find(2);
dd($shop->products);
id2を持つ$shop
には にバインドされた製品がロードされ、製品モデルの熱狂的にロードされたdefaultVariant
属性は防止する必要があります。親切にお勧めします。ありがとうございました。
を使うのか? – ZeroOne
はい、関係としてロードしています。 – BlackBurn027