我有两张表,users
和tokens
每个用户都有一个activated
字段,每个令牌都有{id, token, user_id, created}
个字段。
应用应该如何运作: 在创建时,应用程序将 -
activated
字段为空(以避免对提交的数据进行操作)。tokens
表格中创建一个令牌。在更新时,应用程序将 -
activated
字段进行任何更新。activated
字段设置为false。我知道如何通过控制器激活帐户以及如何为此设置路由器
我需要的主要是模型配置
例如:
我认为令牌创建应该在afterSave
方法中完成,所以 - 如何确定更新或创建操作是否调用该方法?
感谢您的帮助
答案 0 :(得分:1)
你的问题不清楚。如果你有一个字段的默认值,那么为什么不在数据库中设置它而不是在aftersave中做某事?如果您需要执行仅在某些情况下应该执行的操作,请在模型中编写自定义方法,以便在创建或更新时执行所需的任务。
修改
因此,如果您的记录有id,那么您知道它存在于数据库中。因此,要做的简单事情是(在任何方法中)检查模型是否具有id字段并且它不是空的。如果它是空的,那么你知道你正在创建一个记录,你可以做x任务。如果不是,那就做任务。
if(isset($modelData['ModelName']['id']) && !empty($modelData['ModelName']['id'])){
//This is an update
} else {
//This is a new record
}
答案 1 :(得分:1)
yossi你也可以指定应该从表单中保存的字段 - 字段白名单可以保存在$ this-> save()调用中。这样你可以阻止黑客在请求中传递ID,你应该自己在控制器中设置它然后用$ this-> Token-> id =你拥有的任何东西,我个人会使用saveField('激活)与此相结合(只保存一个字段!)。脂肪模型是最好的,如果你可以,但先让它工作然后重构它,如果你遇到困难。比浪费大量时间写第一次完美更好。