У меня есть около 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);
как объяснили Вот
Даже проще вы можете сделать
$user = $usersTable->newEntity($data);
$usersTable->save($user);
обычно $data
исходит от запроса запроса сына, вам даже не нужно создавать массив самостоятельно
в контроллере:
$user = $usersTable->newEntity($this->request->data());
Других решений пока нет …