У меня есть форма с несколькими входами, меняющими один столбец базы данных. Так, например, у меня есть два выбора входов, как меняются одни и те же столбцы базы данных, скажем:Сохранение нескольких записей в базе данных
product_id: 1
category_id: 5
product_id: 1
category_id: 8
Имея это в базе данных, у меня есть два выбора входов - сначала один, чтобы обновить первую запись, а второй, чтобы обновить вторая запись.
Form builder - это всего лишь вход в петлю foreach.
И контроллер:
$data = $form->getData();
foreach($data as $category)
{
var_dump($category);
$em->persist($category);
$em->flush();
}
Это, однако, выдает ошибку, что переменная категория не является объектом в методе Персис.
Например, если есть один выбор входной объект данных выглядит следующим образом:
array (size=2)
0 =>
object(MyBaze\AdminBundle\Entity\ProductCategory30)[444]
private 'productId' => int 53655
private 'categoryId' => int 294
'categoryId' => int 293
И это также не работает.
Как я могу это решить?
EDIT.
<?php
// ...
class ChangeProductCategoryType extends AbstractType
{
/**
* @var int $categoriesCount
*/
private $categoriesCount = 0;
/**
* @var array $choices
*/
private $choices = [];
/**
* @var array $currentCategories
*/
private $currentCategories = [];
/**
* Initialize basic variables
*
* @param $categoriesCount
*/
public function __construct($categoriesCount, $choices, $currentCategories)
{
$this->categoriesCount = $categoriesCount;
$this->choices = $choices;
$this->currentCategories = $currentCategories;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$categoriesArray = [];
foreach($this->choices as $category)
{
$categoriesArray[$category['id']] = $category['name'];
}
for($i = 0; $i < $this->categoriesCount; $i++)
{
$builder->add('categoryId', 'choice', [
'required' => false,
'choices' => $categoriesArray,
'empty_value' => false,
'label' => 'Product category',
'data' => $this->currentCategories[$i]->getCategoryId()
]);
}
}
public function getName()
{
return 'changeProductCategory';
}
} // End ChangeProductCategoryType
Можете ли вы показать нам свой источник типа формы? –
Конечно, я отредактировал сообщение. – khernik