私は、アプリケーション\ソナタ\ MediaBundle \エンティティ\メディア(SonataMediaBundleエンティティ)との関係を持つテーブルを持っている「メディア」メソッド名は、findByまたはfindOneByで始まる必要があります。エラー
通常、私は以下のようなメディアのためのフォームを作ることができ、
$form = $this->createFormBuilder($myMedia)
->add('name')
->add('media') // make the selectbox
->add('save', SubmitType::class, array('label' => 'Create Post'))
->getForm();
しかし、私はすべてのメディアからいくつかのメディアに制限したい、私はこれを作った。
$form = $this->createFormBuilder($myMedia)
->add('name')
->add('media','entity',array(
'class' => "Application\Sonata\MediaBundle\Entity\Media",
'query_builder' => function(EntityRepository $er) {
return $er->createQuery('SELECT r FROM ApplicationSonataMediaBundle:Media');
}))
->add('save', SubmitType::class, array('label' => 'Create Post'))
->getForm();
ただし、このようなエラーが表示されます。
Undefined method 'createQuery'. The method name must start with either findBy or findOneBy!
私はいくつかを見つけたarticles、それはリポジトリに関連して理解しています。 しかし、どのリポジトリを指すべきかはわかりません。そこにはリポジトリクラスは Sonata\MediaBundle\
下ではありませんどちらかApplication\Sonata\MediaBundle
namespace Application\Sonata\MediaBundle\Entity;
use Sonata\MediaBundle\Entity\BaseMedia as BaseMedia;
@ORM\Entity(repositoryClass="Where is my repository???")
class Media extends BaseMedia
{
/**
* @var int $id
*/
protected $id;
ところで、私の最初のコードは写真のための唯一の選択ボックス(MEDIAS)
を示し写真を選択するには十分有用ではありません、 があります写真を選択するより適切な方法?
MediaRepositoryキーワードでプロジェクトフォルダ内を検索してください。あなたが名前空間を見つけたら、それをタイプしてください。 –