【发布时间】:2014-05-31 06:17:29
【问题描述】:
按照this 的回答,我在 Laravel 中进行模型保存回调(类似于 rails),如下所示:
class LessonPlan extends Eloquent {
public function save(array $options = array())
{
// before save code
parent::save();
// after save code
}
}
但是,当我保存 新 页面或更新 现有 页面时,我会在 Page 上调用 save()。我怎么知道在这个操作中哪个是哪个?
我尝试了类似的东西
public function save(array $options = array())
{
// before save code
$oldLesson = clone $this;
parent::save();
..
if ($this->isLessonStatusChanged($oldLesson)) {
..
}
}
private function isLessonStatusChanged($oldLesson) {
return $this->status != $oldLesson->status;
}
但这不好......因为 $oldLesson 已经有了 $lesson 的新值
我最终做的只是对 url 进行正则表达式以查看它是否是更新请求.. 但我已经在晚上难以入睡(我的回答并没有真正告诉我是否有任何值实际上发生了变化.. b /c 可以在不实际更改任何内容的情况下提交更新表单).. 有没有更简洁的方法?
【问题讨论】:
-
但是为什么
$oldLesson应该有新值,如果你只是克隆对象,而不是引用它..? -
我想知道同样的事情@Jari ..我假设在这里保存仅意味着数据库事务或其他东西..我并不暗示它之前的内容将具有旧值item.. 再说一次,我不是 Laravel 专家
-
您可以在这里在线聊天:laravel.io/chat 甚至 Taylor Otwell(laravel 的创建者)也经常在线。
-
您是否考虑过在 parent::save 之前或之后使用 Event::fire() 和(无论您想在哪里收听)Event::listen() ?
-
@alou 这听起来有点矫枉过正.. 一个骇人听闻的矫枉过正
标签: php regex laravel laravel-4