我正在尝试从表单中剥离所有空字段,以防止它们被提交到我的数据库中(使用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)没有影响;我认为我只是错过了一些明显的东西,我的[当前]隧道视野让我看不到。
MyModel
实际上没有扩展Base
/ 使用父级boot
方法一样。 - Shaz MJjenssegers/laravel-mongodb
,对吧?他们扩展了基本模型:abstract class Model extends \Illuminate\Database\Eloquent\Model {
然后Jenssegers\Mongodb\Model
有abstract class Model extends \Jenssegers\Eloquent\Model {
。您遇到了什么错误? - hfinglerBase
模型的static::saving
中尝试了return false
,但模型仍然保存了任何更新的数据;这就是为什么我想知道如何最好地检查MyModel
是否实际上正在使用父级的Base
模型的boot
方法... - Shaz MJdd
怎么样?打开Moloquent模型,放入一些dd()
并检查正在调用什么和未调用什么。 - hfinglerboot()
中任何模型事件,无论是在基础模型还是扩展模型中。 - Shaz MJconstructor
缺少了parent::__constructor
。我的原始方法现在可以使用了,但是->setRawAttributes()
在 mongo 中不能很好地工作;我必须使用->unset($key)
。 - Shaz MJ