我使用Laravels的virtualAs
列修饰符在数据库表中添加了几个虚拟列:
$table->decimal('grand_total')->virtualAs( '(total_value + (total_value*tax_rate))');
基本上,它保留了一个mysql虚拟列,该列根据存储在另一列中的总额和税率自动计算总计。
然而,Laravel似乎一点也不喜欢虚拟列。在保存记录时,它试图对虚拟列执行INSERT
或UPDATE
操作,这在mySQL中显然是不允许的。我找不到在Eloquent模型中配置哪些字段在更新或插入时实际写入数据库的方法。
我尝试将该字段添加到模型$hidden
和$appends
中,但似乎都不起作用。
查看用于插入的Laravel源代码(https://github.com/laravel/framework/blob/5.6/src/Illuminate/Database/Eloquent/Model.php#L733),它似乎只插入$this->attributes
中的任何属性。当从数据库读取记录时,将从表中读取grand_total
字段并将其设置为属性,然后在保存记录后再次尝试写入该字段。
有没有办法让这个Laravel停止尝试保存虚拟列?
https://stackoverflow.com/questions/51389454
复制相似问题