如何使用存储库方法findByxx关于在symfony中带下划线(x)的字段名

如何使用存储库方法findByxx关于在symfony中带下划线(x)的字段名,symfony,doctrine,Symfony,Doctrine,除此之外,我找不到解决问题的文档。 我想使用字段名pay\u no,我想使用存储库 findbyxxx,但我不知道如何正确使用它。将您的属性名称更改为$payNo 可能在你的实体中是这样的 // This is my entity class object use Doctrine\ORM\Mapping as ORM; class PayOrder { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\G

除此之外,我找不到解决问题的文档。 我想使用字段名
pay\u no
,我想使用存储库
findbyxxx,但我不知道如何正确使用它。

将您的属性名称更改为
$payNo

可能在你的实体中是这样的

// 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);
    }
};
//...

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

//....
这样改变它

// 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);
    }
};
//...

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

//....
此后,

  • 删除
    $pay\u no
  • 对于Symfony2,运行应用程序/控制台原则:生成:实体
  • 对于Symfony4,运行
    bin/控制台生成:实体--重新生成
  • 祝你好运。如果您有任何问题或疑问,请写信给我。

    或直接使用

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

    findByX
    方法只是截获的方法调用-请参阅将其转换为
    findBy
    调用。

    强烈建议使用驼峰案例,为什么不使用它?无论如何。我不认为它会以这种方式工作,您可以为这个特定的请求创建自定义存储库方法谢谢您的回答!我也在这里调试代码,确切地说symfony在这里更改了真实的字段名,我现在有情况,url将发布名为“pay_no”的数据,我用PayOrder类构建了一个表单,顺便问一下,数据库列字段名也是pay_no,现在,处理这个问题的最佳方法是什么?谢谢你的回答!我也在这里调试代码,确切地说symfony在这里更改了真实的字段名,我现在有情况,url将发布名为“pay_no”的数据,我用PayOrder类构建了一个表单,顺便问一下,数据库列字段名也是pay_no,现在,处理这个问题的最佳方法是什么?谢谢你的回答!我也在这里调试代码,确切地说symfony在这里更改了真实的字段名,我现在有一个情况,url将发布名称为pay_no,我用PayOrder类构建了一个表单,顺便问一下,数据库列字段名也是pay_no,现在,处理这个问题的最佳方法是什么?正如Mert在另一个答案中所建议的()我会把字段改为payNo。请您在表格中详细说明您的问题好吗?我不知道你到底是什么意思。是的,但我不知道我应该告诉谁更具体,关于这个问题,你不清楚哪一点?我不理解url和表单的问题,但我会这样做:1。将付款人字段更改为
    $payNo
    2。更新表单以使用payNo。如果您想在html表单中使用“pay_no”,您可以将表单字段命名为“pay_no”,然后使用表单选项
    “property_path”=>“pay no”
    非常感谢!我认为使用属性路径是可以的,但是会产生另一个问题,当表单->handleRequest($request)调用表单->isvalid()时,表单将丢失PayOrder字段到$payNo验证,它将错过$payNo验证的部分。