Bir istemcinin adres bilgilerini saklayan bir Symfony biriminde, tüm ülkeleri içeren bir varlıkla ManyToOne bağlantısı yaptım. Yani varlık de vardır aşağıdaki linki:Symfony formunun ManyToOne alanı vardır, ancak yine de __tostring() işlevini gerektirir
/**
* @var string
*
* @ORM\Column(name="country_code", type="string", length=2)
*
* @ORM\ManyToOne(targetEntity="Country")
* @ORM\JoinColumn(name="country_code", referencedColumnName="country_code")
*/
private $countryCode;
bu varlığın oluşturulan formda ben şöyle tanımlamış:
->add('countryCode', 'entity', array(
'class' => 'MyBundle:Country',
'choice_label' => 'name_en',
'choice_value' => 'country_code',
'data' => 'nl',
))
Yani birincil anahtar ancak COUNTRY_CODE iki harfli saklamaz Hollanda için "nl" gibi kod.
O halde çalışmasını sağlamak için __tostring() kodunu eklemeliyim, ama neden bu? Ben zaten bir ManyToOne bağlantısı olduğu gibi __tostring işlevi gerekli olmayacaktı.
public function __toString()
{
return strval($this->countryCode);
}
ManyToOne değiştirdim ve __tostring() işlevini kaldırdım ve şimdi ülke veritabanında bağlı. Ben sadece Symfony sürüm 2.7.10 içinde olduğum gibi query_buidler çalışıyorum bu kod yeni. Tüm ülkeleri almak ve varsayılanı ayarlamak için veritabanından nasıl bir sorgu yapabilirim? – Tom
query_builder yeni bir özellik değil, 2.7'de çalışmalı. *. Kullanım ifadesini koydun mu? (Doctrine \ ORM \ EntityRepository;) kullanın? Ve eğer yaptıysanız, Ülke Varlığınız için bir deponuz var mı? – TomVerdier
Evet Kullanım ekledim. Bu hata, orderBy seçeneğindedir, kaldırıldığında, varsayılan değer ayarlanmadığı sürece çalışır mı? OrderBy, name_en'nin bulunmadığı bir hatayı verir, ancak oradadır. – Tom