我是Cakephp3的新手。我想知道是否可以将新的输入表单controller1添加到table2。
这是一个登录表单。因此,我想首先验证用户是否已注册,然后在验证之后,将详细信息保存到另一个表中。
class UsersController extends AppController
{
public function login()
{
$user = $this->Users->newEntity();
if($this->request->is(['post']))
{
$user = $this->Auth->identify();
if($user)
{
$logs = TableRegistry::get('AttendsTable');
$log->username = 'lorem ipsum';
$log->datenow = '2018-11-10';
$log->tin = '12:42:00';
$log->tout ='12:42:00';
$logs->save($log);
$this->Auth->setUser($user);
$this->redirect(['action'=>'index']);
}
}
}
我遇到错误:
“传递给Cake \ ORM \ Table :: save()的参数1必须实现接口Cake \ Datasource \ EntityInterface,给定的stdClass实例,在C:\ xampp \ htdocs \ TimeStamps \ src \ Controller \ UsersController.php中调用在第32行上
答案 0 :(得分:0)
您的代码无法正常工作,因为Model->save()
函数需要一个实体。在您的代码段中$log
不是首先定义的,因此PHP只是使其成为stdClass
(一定要喜欢高级编程:p)。
类似的事情应该起作用:
$logs = TableRegistry::get('AttendsTable');
$log = $logs->newEntity([
'username' => 'lorem ipsum',
'datenow' => '2018-11-10',
// ...
]);
$logs->save($log);
此外,我听说最好使用$this->loadModel()
而不是TableRegistry::get()
:
$this->loadModel('ExternalModel');
// Now available:
$this->ExternalModel->//...