Is it possible to temporarily disable the appends
functionality in Laravel 5.4
during testing?
protected $appends = [
'full_name',
];
I want to ignore that ^.
I've made a model factory but when I'm testing I don't want to have these append items on my model.
I have had experience with this too. I've found a good solution here.
But, if you like a one-liner solution, you can also use the ff methods of Eloquent's Model
class:
setHidden(array $hidden)
makeHidden(array|string $attributes)
You can check these here.
I was thinking something like this:
/**
* 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;
}
But @elegisandi thanks that works great.
I was using this code is suitable: testing for Model name Product
for example
// 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]);
}
Now the $needed_product
gets without any appends attributes