使用cakephp仅插入两列数据库

时间:2018-03-01 07:32:11

标签: php cakephp cakephp-3.0

我有大约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'];

1 个答案:

答案 0 :(得分:2)

有一种方法可以将数据修补到实体中,因此您无需亲自执行此操作:patchEntity()

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

所以不要做

$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());