[英]Prevent Eager Loads of a Model in relations in Laravel
问题:每当访问模型时,都会加载模型的急切负载(在$appends
设置),如果通过另一个模型的关系的with()
方法请求相同的模型,则也是如此。 我期望的是避免从关系查询时加载$appends
属性。 请参阅下面的详细信息。
模型1
<?php
Class Shop extends Eloquent{
protected $appends = [];
public function products(){
return $this->hasMany(App\Product::class);
}
}
模型2(在$ appends中具有属性)
<?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);
现在将为ID为2的$shop
加载绑定到的产品,以及急需加载的产品模型的defaultVariant
属性,这是需要避免的。 请提示。 谢谢。
如果要隐藏defaultVariant
,请使用hidden
Class Product extends Eloquent{
protected $appends = ['defaultVariant'];
protected $hidden = ['defaultVariant'];
public function variants(){
return $this->hasMany(App\Variant::class);
}
public function getDefaultVariantAttribute(){
}
}
或以编程方式
$this->hidden(['defaultVariant']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.