问题:只要访问该模型,就会加载模型的预先加载(在$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
属性,这是需要防止的。请建议。谢谢。
答案 0 :(得分:0)
如果你想隐藏defaultVariant
,只需使用隐藏的
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']);