【问题标题】:Temporarily disable Laravel appends暂时禁用 Laravel 附加功能
【发布时间】:2017-12-29 02:43:23
【问题描述】:

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

protected $appends = [
        'full_name',
    ];

我想忽略那个^。

我已经制作了一个模型工厂,但是在测试时我不想在我的模型上添加这些附加项。

【问题讨论】:

标签: php laravel


【解决方案1】:

我也有这方面的经验。我找到了一个很好的解决方案here

但是,如果你喜欢单线解决方案,你也可以使用 Eloquent 的 Model 类的 ff 方法:

  • setHidden(array $hidden)

  • makeHidden(array|string $attributes)

您可以查看这些here

【讨论】:

  • 我使用addHidden方法。
【解决方案2】:

我在想这样的事情:

/**
 * 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 谢谢,效果很好。

【讨论】:

    【解决方案3】:

    我用的这段代码是合适的: 例如测试型号名称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 没有任何附加属性

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      相关资源
      最近更新 更多