私はどのように行いますか
WHERE id != 1
ドクトリンで?
私はこれまでのところこれを持っています
$this->getDoctrine()->getRepository('MyBundle:Image')->findById(1);
しかし、「等しくない」を行うにはどうすればよいですか?
これはばかげているかもしれませんが、これへの参照が見つかりませんか?
ありがとう
私はどのように行いますか
WHERE id != 1
ドクトリンで?
私はこれまでのところこれを持っています
$this->getDoctrine()->getRepository('MyBundle:Image')->findById(1);
しかし、「等しくない」を行うにはどうすればよいですか?
これはばかげているかもしれませんが、これへの参照が見つかりませんか?
ありがとう
意図したことを可能にする組み込みメソッドはありません。
次のように、リポジトリにメソッドを追加する必要があります。
public function getWhatYouWant()
{
$qb = $this->createQueryBuilder('u');
$qb->where('u.id != :identifier')
->setParameter('identifier', 1);
return $qb->getQuery()
->getResult();
}
お役に立てれば。
もう少し柔軟性を持たせるために、次の関数をリポジトリに追加します。
public function findByNot($field, $value)
{
$qb = $this->createQueryBuilder('a');
$qb->where($qb->expr()->not($qb->expr()->eq('a.'.$field, '?1')));
$qb->setParameter(1, $value);
return $qb->getQuery()
->getResult();
}
次に、次のようにコントローラーで呼び出すことができます。
$this->getDoctrine()->getRepository('MyBundle:Image')->findByNot('id', 1);
私はこれをかなり簡単に(メソッドを追加せずに)解決したので、共有します:
use Doctrine\Common\Collections\Criteria;
$repository->matching( Criteria::create()->where( Criteria::expr()->neq('id', 1) ) );
ところで、私は Zend Framework 2 内から Doctrine ORM モジュールを使用していますが、これが他の場合に互換性があるかどうかはわかりません。
私の場合、次のようなフォーム要素構成を使用していました。ラジオボタン配列で「ゲスト」を除くすべてのロールを表示します。
$this->add(array(
'type' => 'DoctrineModule\Form\Element\ObjectRadio',
'name' => 'roles',
'options' => array(
'label' => _('Roles'),
'object_manager' => $this->getEntityManager(),
'target_class' => 'Application\Entity\Role',
'property' => 'roleId',
'find_method' => array(
'name' => 'matching',
'params' => array(
'criteria' => Criteria::create()->where(
Criteria::expr()->neq('roleId', 'guest')
),
),
),
),
));