暂时禁用Laravel附加

时间:2017-07-23 12:06:23

标签: php laravel

是否可以在测试期间临时禁用appends中的Laravel 5.4功能?

protected $appends = [
        'full_name',
    ];

我想忽略那个^。

我已经建立了一个模型工厂,但是当我测试时,我不想在我的模型上添加这些项目。

3 个答案:

答案 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的获取没有任何附加属性