我可以看到在CakePHP 3.x中将数据保存到我的数据库的两种不同方法,一种有效,另一种无效。除了显而易见的,我不能让一个人工作,为什么你会使用一个而不是另一个,你能说出为什么其中一种方法不适合我吗?
选项1 :(不工作)
$usersTable = TableRegistry::get('users');
$user = $usersTable->newEntity();
$user = $usersTable->patchEntity($user, $this->request->data);
$usersTable->save()
此选项提供错误
Warning (4096): Argument 1 passed to Cake\ORM\Table::save() must implement interface Cake\Datasource\EntityInterface, none given, called in
Notice (8): Undefined variable: entity [CORE\src\ORM\Table.php, line 1453]
选项2:有效吗
$user = $this->Users->newEntity();
$user = $this->Users->patchEntity($user, $this->request->data);
$this->Users->save($user)
答案 0 :(得分:0)
第一个显然无法正常工作,因为你在save方法中缺少参数:
$usersTable->save(); // invalid
$usersTable->save($user); // valid
如果我从用户控制器保存数据,为什么要使用TableRegistry?我总是喜欢第二个。使用TableRegistry的过程有点慢(可能需要几微秒或更短)。