Как использовать метод репозитория findByxx для имени поля с подчеркиванием (_) в symfony - PullRequest
0 голосов
/ 26 декабря 2018
// This is my entity class object
use Doctrine\ORM\Mapping as ORM;
class PayOrder {
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORM\Column(type="string",unique=true)
     */
    private $pay_no;
};
// I use it in my function, this is the Repository
use Doctrine\ORM\EntityManager;
use Exception;
use Psr\Container\ContainerInterface;
use Doctrine\ORM\Mapping;
class PayOrderRepository extends \Doctrine\ORM\EntityRepository {
    public function get( PayOrder $payOrder ) {
        $pay_no=$payOrder->getPayNo();
        // It will occurs a exception, how to fix it, any one can help me?
        return $this->findBypayno($pay_no);
    }
};

Кроме того, я не могу найти документ для решения проблемы.Я хочу использовать имя поля pay_no, и я хочу использовать хранилище findbyxxx, но я не знаю, как правильно его использовать.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Или просто используйте

$this->findBy(['pay_no' => $payOrder->getPayNo());

Метод findByX - это просто перехваченные вызовы методов - см. строка от 177 до 179 , преобразованная в findBy вызовы.

0 голосов
/ 26 декабря 2018

Измените название вашей собственности на $payNo.

Возможно, в вашей сущности выглядят так;

//...

/**
 * @ORM\Column(type="string", length=255)
 */
$pay_no

//....

Измените это так;

//...

/**
 * @ORM\Column(name="pay_no", type="string", length=255)
 */
$payNo

//....

После этого

  1. Удалитьстарый метод получения / установки для $pay_no
  2. Для Symfony2 запустите app/console doctrine:generate:entities
  3. Для Symfony4 запустите bin/console make:entity --regenerate

Goodluck.Если у вас есть вопрос или блокировщик, пожалуйста, напишите мне.

...