是否可以在测试期间临时禁用appends
中的Laravel 5.4
功能?
protected $appends = [
'full_name',
];
我想忽略那个^。
我已经建立了一个模型工厂,但是当我测试时,我不想在我的模型上添加这些项目。
答案 0 :(得分:3)
我也有过这方面的经验。我找到了一个很好的解决方案here。
但是,如果你喜欢单线解决方案,你也可以使用Eloquent Model
类的ff方法:
setHidden(array $hidden)
makeHidden(array|string $attributes)
您可以查看这些here。
答案 1 :(得分:0)
我在想这样的事情:
/**
* Get all appended items.
*
* @return array
*/
public function getAppends()
{
$vars = get_class_vars(__CLASS__);
return $vars['appends'];
}
/**
* Unset all appended items.
*
* @return $this
*/
public function unsetAppends()
{
collect($this->getAttributes())->pull($this->getAppends());
return $this;
}
但是@elegisandi感谢这很好。
答案 2 :(得分:0)
我当时使用的这段代码合适:
测试型号名称Product
// get product with "id = 1" for example
$needed_product = Product::find(1)->toArray();
// remove un-used attributes
$product = new Product;
foreach ($product->appends as $attr) {
unset($needed_product[$attr]);
}
现在$needed_product
的获取没有任何附加属性