所以基本上我在两种改变模型数据的方法之间挣扎。
方法1 :(函数直接在模型数据中更改)
$this->Model->set($data);
$this->Model->changeSomeData();
方法2 :(带输入和输出的功能)
$data = $this->Model->data;
$newdata = $this->Model->changeSomeData($data);
$this->Model->set($newdata);
有人可以对此有所了解,使用什么以及为什么?
由于
答案 0 :(得分:1)
我确信这是Cake 1.x的遗留问题,其中调用Model->set($data)
是常见做法。我猜它会发生,因为validate()
,create()
和save()
需要为模型分配id
或data
。
随着代码的成熟,这种做法已经过时,因为save()
会接受$data
并执行验证。
这里的问题是CakePHP将模型和实体合并为一个类。良好的数据库布局将分离模型和实体。这就是我认为他们正在使用Cake 3.x
另一个问题是Cake使用缓存来处理模型实例。两个不相关的类可能会更改模型的数据,因为它们共享相同的引用。
所以我强烈推荐方法#2。
代码更易于阅读,更易于维护。