public function build() { $criteria = new Criteria(); $status = new TodoStatus(); $criteria->andWhere($criteria->expr()->eq('status.value', $status->getValue())); return $criteria; }
/** * 検索条件の生成 * @return Criteria */ public function build() { $criteria = new Criteria(); // タイトル検索 if (!empty($this->title)) { $criteria->andWhere($criteria->expr()->contains('title', $this->title)); } // ステータス検索 if ($this->status instanceof TodoStatus) { $criteria->andWhere($criteria->expr()->eq('status.value', $this->status->getValue())); } return $criteria; }
/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('title', 'text', ['label' => 'タイトル', 'required' => false])->add('status', 'choice', ['choices' => TodoStatus::getNames(), 'label' => 'ステータス', 'required' => false, 'empty_value' => '選択してください']); // ステータスオブジェクトの変換 $builder->get('status')->addModelTransformer(new CallbackTransformer(function ($output) { if ($output instanceof TodoStatus) { return $output->getValue(); } }, function ($input) { if (!empty($input)) { return new TodoStatus($input); } })); }
public function completed() { $this->status->completed(); }