如何从另一个控制器 Cakephp 3 添加到 Table

How to Add to Table from Another Controller Cakephp 3

我是 cakephp3 的新手。我想知道是否可以向 table2 添加一个新的输入表单 controller1。

这是一个登录表单。所以我想先验证用户是否注册,然后验证后,我想将详细信息保存到另一个table。

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']);
            }
        }
    }

我遇到一个错误:

"Argument 1 passed to Cake\ORM\Table::save() must implement interface Cake\Datasource\EntityInterface, instance of stdClass given, called in C:\xampp\htdocs\TimeStamps\src\Controller\UsersController.php on line 32"

您的代码无法运行,因为 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->//...