вставка только в два столбца базы данных с использованием cakeStack Overflow

У меня есть около 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

Решение

Существует метод, используемый для исправления данных в сущности, поэтому вам не нужно делать это самостоятельно: 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());
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector