php - 如何停止创建两个字段相等的 Laravel 模型?
问题描述
我有一张桌子叫purchase_records
. 采购记录表中的一个字段被称为buyer
,另一个被称为seller
- 这些字段都与users
表相关,并且它们不能具有相同的值。
MySQL 不支持检查约束,如果这是另一个 SQL 服务器,我可以将其添加到创建表的迁移的底部:
DB::statement("ALTER TABLE purchase_records ADD CONSTRAINT different_users CHECK (seller <> buyer)");
我不认为 Laravel 有办法轻松监听 MySQL 触发器,所以我提出的解决方案是覆盖模型create()
上的方法PurchaseRecord
- 如下:
public static function create(array $attributes = [])
{
if ($attributes['buyer'] === $attributes['seller'] {
throw new InvalidArgumentException();
}
return static::query()->create($attributes);
}
我正在使用存储库模式来记录购买记录,并且有政策和验证管理谁可以做什么,但我想确保在我的应用程序的最低级别,用户不能从自己那里购买东西 - 这是最好的吗有什么办法可以保证?
解决方案
推荐阅读
- c# - 在ac#程序中,如何访问可观察集合的属性?
- java - mssql-jdbc-6.3.4.jre8-preview.jar 没有 sqljdbc_auth.dll
- spring-batch - 如何重新启动面向正确位置的弹簧批处理块?
- python-3.x - 将 csv 从 s3 转换为镶木地板的 Lambda 函数
- google-drive-api - Google Drive API - 在恢复原始文件夹之前恢复从垃圾箱恢复的文件的原始文件夹
- macos - 你可以在 MacOS 上安装 Powershell 模块吗?
- omnet++ - 计时器时间反映在仿真时间中
- python - 我如何看待 selenium webdriver 的输入?[Python]
- mysql - 导入数据库数据后,启用二进制日志记录只是擦除它
- docker - docker-compose 健康检查端口映射