我有大约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'];
答案 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());