Search code examples
phpsymfonysymfony-2.1propel

Propel form returns object instead of id


I get this when the form is saved.

Object of class Business\CompaniesBundle\Model\Province could not be converted to int in /Library/WebServer/Documents/business/src/Business/CompaniesBundle/Model/om/BaseCompany.php

<?php
namespace Business\CompaniesBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Business\CompaniesBundle\Model\IndustriesQuery;
use Business\CompaniesBundle\Model\Province;
use Business\CompaniesBundle\Model\ProvinceQuery;

class CompanyType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add('company_name');
        $builder->add('company_description','textarea');
        $builder->add('company_address');
        $builder->add('province_id', 'model', array(
            'class'=>'Business\CompaniesBundle\Model\Province'
            //'query'=> ProvinceQuery::create()->orderByProvinceName()
        ));
        $builder->add('industries', 'model', array(
            'class'=>'Business\CompaniesBundle\Model\Industries',
            'query'=> IndustriesQuery::create()->orderByIndustryName(),
            'multiple'=>true,
            'expanded'=>true,
            'required'=>true
        ));
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver) {
        $resolver->setDefaults(array('data_class'=>'Business\CompaniesBundle\Model\Company'));
    }

    public function getName() {
        return 'company';
    }

Any idea of what is the issue here?


Solution

  • Fixed it by changing

    $builder->add('province_id', 'model', array(
            'class'=>'Business\CompaniesBundle\Model\Province'
        ));
    

    to

    $builder->add('province', 'model', array(
            'class'=>'Business\CompaniesBundle\Model\Province'
        ));
    

    setProvince method of the Company object expected an object of Province type