保存之前从Laravel模型中删除空属性

沙兹·阿姆贾德(Shaz Amjad)

我试图剥离所有空字段,使其不从表单提交到数据库中(使用Mongo-Moloquent扩展Eloquent)。

我有一个基本模型:

class Base extends Moloquent {
  public static function boot(){
    parent::boot();
    static::saving( function($model){
      $arr = $model->toArray();
      $removed = array_diff($arr, array_filter($arr));
      foreach($removed as $k => $v) $model->__unset($k);
      return true;
    });
  }
}

然后扩展它:

class MyModel extends Base{
  public static function boot(){
    parent::boot()
  }
}

但这对子类(MyModel)没有影响;我想我只是缺少一些显而易见的东西,即我(当前)的隧道视野不会让我看到。

沙兹·阿姆贾德(Shaz Amjad)

对于任何寻求解决方案的人;我设置了一个中间件来去除所有空的输入字段,然后在保存方法中执行相同的操作。

/* app/Http/Middleware/StripRequest.php */

use Closure;
class StripRequest {
  public function handle($request, Closure $next)
  {
    $request->replace(array_filter($request->all()));
    return $next($request);
  }
}

请记住将其添加到内核中$middleware

/* app/Http/Kernel.php */

protected $middleware = [
    'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
    'Illuminate\Cookie\Middleware\EncryptCookies',
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
    'Illuminate\Session\Middleware\StartSession',
    'Illuminate\View\Middleware\ShareErrorsFromSession',
    'app\Http\Middleware\StripRequest',
];

从那里我使用了与上面指定的相同的模型。只要记住要parent::__construct()在构造函数中使用或以任何其他方法调用parent。对我有用的方法:

/* app/Models/Base.php */

static::saving(function($model){
  // Clear out the empty attributes
  $keep = array_filter($model->getAttributes(), function($item){ return empty($item); });
  foreach($keep as $k => $v) $model->unset($k);

  // Have to return true
  return true;
});

unset()https://github.com/jenssegers/laravel-mongodb#mongodb-specific-operations使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel模型属性在我保存时为空,但已在构造函数中对其进行了验证

来自分类Dev

laravel不保存模型属性

来自分类Dev

保存后,为什么基于默认定义的Laravel雄辩的模型属性为空?

来自分类Dev

保存后,为什么基于默认定义的Laravel雄辩的模型属性为空?

来自分类Dev

保存模型之前在YII中获取模型ID

来自分类Dev

在Laravel模型中设置属性

来自分类Dev

Laravel Eloquent:如何在保存之前存储模型值?

来自分类Dev

删除Django模型表单中的空级别

来自分类Dev

删除Django模型表单中的空级别

来自分类Dev

Laravel 5模型删除事件在软删除时会忽略属性

来自分类Dev

Django-sqlite-从模型中删除属性

来自分类Dev

从查询后产生的模型中删除属性

来自分类Dev

无法删除 Sequelize 查询中的模型属性

来自分类Dev

查找并从对象中删除空属性

来自分类Dev

无法使用口才在Laravel中删除模型

来自分类Dev

Laravel,无法从模型中删除项目

来自分类Dev

如何在Laravel中缓存模型属性

来自分类Dev

Laravel在__constructor中向模型添加属性

来自分类Dev

更改模型中的字段/属性值-Laravel

来自分类Dev

如何在Laravel中缓存模型属性

来自分类Dev

访问在 Laravel 中返回模型的方法的属性

来自分类Dev

物理删除在laravel5中启用软删除的模型?

来自分类Dev

在应用深等式之前,如何从序列中删除元素/属性?

来自分类Dev

确定模型属性在yii中是否为空

来自分类Dev

在骨干/下划线模板中处理空模型属性

来自分类Dev

模型中对象的 MVC 属性在发布时为空

来自分类Dev

从 Laravel 集合中删除重复的属性

来自分类Dev

保存在Laravel 5中之前修改请求字段值

来自分类Dev

保存模型值不为空

Related 相关文章

热门标签

归档