使用cakephp仅插入数据库的两列

inserting only in two columns of database using cakephp

我有大约 30 40 列,但只插入 2 列进行练习。

现在这就是我插入数据库的方式。

UsersTable.php

public function createUser($data)
    {

        $usersTable = TableRegistry::get('users');
        $user = $usersTable->newEntity();

        $user->first_name = $data['first_name'];
        $user->first_name = $data['first_name'];


        $usersTable->save($user);
    }

并在控制器中UsersController.php

function signUp()
    {
        if($this->request->is('post')){
            $data['first_name']='test first name';
            $data['last_name']='test last name';
            $this->Users->createUser($data);
        }


        else{
            $this->viewBuilder()->Setlayout('signup');
        }
    }

一切顺利,但我怀疑这是不是一个好方法?

如果我必须插入 15 列,所以我必须像这样在模型中提及每个 entity 怎么办?

$user->first_name = $data['first_name']; $user->first_name = $data['first_name'];

有一种方法可以将数据修补到实体中,这样您就不必自己动手了:patchEntity()

patchEntity 检查传递的数组并将值分配给实体的相应键。

所以不用做

$user = $usersTable->newEntity();
$user->first_name = $data['first_name'];
$user->first_name = $data['first_name'];
$usersTable->save($user);

你可以简单地做

$user = $usersTable->newEntity();
$usersTable->patchEntity($user, $data);
$usersTable->save($user);

如解释的那样here

你可以做的更简单

 $user = $usersTable->newEntity($data);
 $usersTable->save($user);

通常$data来自请求查询子你甚至不必自己创建数组

在控制器中:

$user = $usersTable->newEntity($this->request->data());