gpt4 book ai didi

php - 使用 MySQL 或 Laravel 限制与记录的关系数

转载 作者:行者123 更新时间:2023-11-29 03:17:50 25 4
gpt4 key购买 nike

我正在寻找一种方法来限制 Laravel 模型可以拥有的项目数量。

模型 A 最多可以有 5 个与之相关的模型 B,但不能超过 5 个。到目前为止,我在 A 和 B 之间建立了多对多关系,但这允许两者之间的关系数量不受限制。

像这样

A1 | B1
A1 | B2
A1 | B3
A1 | B4
A1 | B5

尝试添加A1 | B6 要么在插入时从 MySQL 返回错误,要么在尝试插入之前从 Laravel 返回错误。

我一直在寻找类似 MySQL 的唯一性的东西,它可以应用于 A 列,但限制为 5 次而不是 1 次。

最佳答案

我认为在 Laravel 中没有内置的方法可以做到这一点。如果我正确理解你的问题,你可以查看 laravel 模型事件

Eloquent models fire several events, allowing you to hook into the following points in a model's lifecycle: retrieved, creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored. Events allow you to easily execute code each time a specific model class is saved or updated in the database.

因此您可以 Hook 到其中一个事件,如创建保存,然后检查数据库是否具有适当数量的关系并通过抛出一些异常来停止数据库操作

此处的伪代码可能会有所帮助

class A1{
protected $dispatchesEvents = [
'saving' => A1SavingEvent::class,

];
.....
.....
}

//The handle method of the Listener for the A1SavingEvent

public function handle(){
if(count(A1->B1) > 5){
throw CountExceededException('You already have 5 relations')
}
}

Doc Link

关于php - 使用 MySQL 或 Laravel 限制与记录的关系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51696132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com