Arhn - архитектура программирования

Вставка данных в базу данных с помощью zf3 и доктрины

я пытаюсь вставить данные в базу данных, но отправленные формы ничего не делают.

это мой сервис-менеджер:

class AutosManager
{
/**
 * Entity manager.
 * @var Doctrine\ORM\EntityManager;
 */
 private $entityManager;   
/**
 * Constructor.
 */
public function __construct($entityManager)
{
    $this->entityManager = $entityManager;
}

public function addNewAutos($data) 
{
    $autos = new Autos();
    $autos->setTitle($data['title']);
    $autos->setDescription($data['description']);
    $currentDate = date('Y-m-d H:i:s');
    $autos->setDateCreated($currentDate);        

    $this->entityManager->persist($autos);

    $this->entityManager->flush();
}

это мой контроллер addAction

public function addAction()
{
     // Create the form.
    $form = new PostForm();

    if ($this->getRequest()->isPost()) {

        // Get POST data.
        $data = $this->params()->fromPost();

        // Fill form with data.
        $form->setData($data);
        if ($form->isValid()) {

            // Get validated form data.
            $data = $form->getData();
            $this->AutosManager->addNewAutos($data);
            return $this->redirect()->toRoute('retrieve');
        }
    }  
    return new ViewModel([
        'form' => $form
    ]);
}

я могу получить данные из базы данных на страницу индекса, но я не могу добавить. надеюсь найти решение.

это мой автомобильный объект

namespace Retrieve\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
* @ORM\Entity(repositoryClass="\Retrieve\Repository\AutosRepository")
* @ORM\Table(name="auto")
*/
class Autos 
{

/**
 * @ORM\Id
 * @ORM\Column(name="id")
 * @ORM\GeneratedValue
 */
protected $id;

/** 
 * @ORM\Column(name="title")  
 */
protected $title;

/** 
 * @ORM\Column(name="description")  
 */
protected $description;

/** 
 * @ORM\Column(name="featured")  
 */
protected $featured;

/**
 * @ORM\Column(name="date_created")  
 */
protected $dateCreated;


/**
 * Returns ID of this post.
 * @return integer
 */
public function getId() 
{
    return $this->id;
}

/**
 * Sets ID of this post.
 * @param int $id
 */
public function setId($id) 
{
    $this->id = $id;
}

/**
 * Returns title.
 * @return string
 */
public function getTitle() 
{
    return $this->title;
}

/**
 * Sets title.
 * @param string $title
 */
public function setTitle($title) 
{
    $this->title = $title;
}

/**
 * Returns featured.
 * @return integer
 */
public function getFeatured() 
{
    return $this->featured;
}

/**
 * Sets featured.
 * @param integer $featured
 */
public function setFeatured($featured) 
{
    $this->featured = $featured;
}   

/**
 * Returns post description.
 */
public function getDescription() 
{
   return $this->description; 
}

/**
 * Sets post description.
 * @param type $description
 */
public function setDescription($description) 
{
    $this->description = $description;
}

/**
 * Returns the date when this post was created.
 * @return string
 */
public function getDateCreated() 
{
    return $this->dateCreated;
}

/**
 * Sets the date when this post was created.
 * @param string $dateCreated
 */
public function setDateCreated($dateCreated) 
{
    $this->dateCreated = $dateCreated;
}

}

надеюсь, что это поможет найти решение.


  • Есть ли журнал ошибок? Или вы могли бы дать соответствующий код, например Entity, AutosManager и Controller? 10.06.2017
  • @ДоллиАсвин. нет. журнала ошибок нет. 10.06.2017
  • кажется, нет никаких проблем с сущностью. Вы передали EntityManager AutosManager? 12.06.2017

Ответы:


1

Я обнаружил проблему: это был элемент inputfilter, который я не использовал, который аутентифицировался в формах. Но решение только приводит меня к другой проблеме:

Примечание. Неопределенный индекс: заголовок в C:\xampp\htdocs\ameyaw\module\BusinessGhana\src\Service\AutosManager.php в строке 38.

Примечание. Неопределенный индекс: описание в C:\xampp\htdocs\ameyaw\module\BusinessGhana\src\Service\AutosManager.php в строке 39.

Примечание. Неопределенный индекс: представлен в C:\xampp\htdocs\ameyaw\module\BusinessGhana\src\Service\AutosManager.php в строке 58.

Сообщение:

Исключение произошло при выполнении «ВСТАВИТЬ В авто (название, описание, избранное, дата_создания) ЗНАЧЕНИЯ (?, ?, ?, ?)» с параметрами [null, null, null, «2017-06-15 05:04:44» ]:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Заголовок столбца не может быть нулевым

это моя форма и набор полей

use Zend\Form\Fieldset;
use Doctrine\Common\Persistence\ObjectManager;
use DoctrineModule\Persistence\ObjectManagerAwareInterface;
use BusinessGhana\Entity\Autos;

class AddFieldset extends Fieldset 
{

 protected $objectManager;

public function init()
{   

    $this->add([        
        'type'  => 'text',
        'name' => 'title',
        'attributes' => [
            'id' => 'autoTitle'
        ],
        'options' => [
            'label' => 'Title',
            'display_empty_item' => true,
            'empty_item_label'   => 'Maximum of 60 characters',
        ],
    ]);

    $this->add([            
        'type'  => 'textarea',
        'name' => 'description',
        'attributes' => [
            'id' => 'autoDescription'
        ],
        'options' => [
            'label' => 'Description',
            'display_empty_item' => true,
            'empty_item_label'   => 'description',
        ],
    ]);             
     $this->add([        
        'type'  => 'radio',
        'name' => 'featured',
        'attributes' => [
            'id' => 'autoFeatured'
        ],
        'options' => array(
            'label' => 'Featured',
            'value_options' => array(
                array('value' => '0',
                    'label' => 'No',
                    'selected' => true,
                    'label_attributes' => array(
                        'class' => 'col-sm-2 btn btn-default',
                    ),
                ),
                array(
                    'value' => '1',
                    'label' => 'Yes',
                    'label_attributes' => array(
                        'class' => 'col-sm-2 btn btn-danger',
                    ),
                ),
            ),
            'column-size' => 'sm-12',
            'label_attributes' => array(
                'class' => 'col-sm-2',
            ),
        ),
    ]);

 }

 }


 use Zend\Form\Form;
//use Zend\InputFilter\InputFilter;


class AddForm extends Form
{
public function init()
{
    $this->add([
        'name' => 'dependentForm',
        'type' => AddFieldset::class,

    ]);

    $this->add([
        'type' => 'submit',
        'name' => 'submit',
        'attributes' => [
            'value' => 'Submit',
        ],
    ]);
}
}

Я знаю, что гидратация может решить эту проблему, но я пока не знаю, как ее использовать.

15.06.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..