私はDoctrine2でSymfony2を使用します。次のエンティティがあります。Doctrine2 findBy()の結合テーブルフィールドの順
/**
* Person
*
* @ORM\Entity(repositoryClass="Acme\Bundle\ConsysBundle\Entity\PersonRepository")
* @ORM\HasLifecycleCallbacks
* @ORM\Table(name="person")
*/
class Person
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @ORM\ManyToOne(targetEntity="Company", inversedBy="persons", fetch="EAGER")
* @ORM\JoinColumn(name="company_id", referencedColumnName="id", onDelete="SET NULL")
*/
private $company;
}
と
/**
* Company
*
* @ORM\Entity(repositoryClass="Acme\Bundle\ConsysBundle\Entity\CompanyRepository")
* @ORM\HasLifecycleCallbacks
* @ORM\Table(name="company")
*/
class Company
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, unique=true)
*/
private $name;
}
は今私のコントローラで私は、次の操作を行う必要があります
$repository = $this->getDoctrine()->getRepository('AcmeConsysBundle:Person');
$people = $repository->findBy(
array(),
// here I want to order by the company name
// that is taken from the Company entity
array('company.name' => 'asc')
);
もちろんこのコードは動作しません、と言っ"company.name"は認識されません。しかし、その列でどのように注文できますか? findBy()の使用は可能ですか?
を個人エンティティのexisitingコレクションをソートしたい場合、私はそれがfindbyでは不可能だと思いますが、あなたが作ることができ
あなたPersonRepositoryにこれを追加カスタムクエリー – 0x1gene
不明な点がある場合は、私の答えとコメントを確認してください - それ以外の場合はpleaeを受け入れてください:) – nifr