我有一个表,列(Id,client_id ...)
我需要使用非primaryKey client_id作为唯一的插入或更新...
if client_id exist
INSERT.....
else
UPDATE.....WHERE client_id = X
我使用的是学说,我的代码就像这样
$em = getEntityManager();
$programaFidelidade = new ProgramaFidelidadeClientes;
$programaFidelidade->setIdCliente($param['idCliente']);
$programaFidelidade->setIdProgramaFidelidade($param['programa']);
$em->merge($programaFidelidade);
$em->flush();
我的实体是这样的:
/**
* @Column(name="id", type="integer", nullable=false)
* @Id
* @GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @Column(name="id_cliente", type="integer")
*/
private $idCliente;
由于
抱歉我的英文
@EDIT(工作代码)
$programaFidelidade = $em->getRepository(ProgramaFidelidadeClientes::class)->findBy(['idCliente' => $param['idCliente']]);
if($programaFidelidade == null){
$programaFidelidade = new ProgramaFidelidadeClientes;
$programaFidelidade->setIdCliente($param['idCliente']);
$programaFidelidade->setIdProgramaFidelidade($param['programa']);
$em->merge($programaFidelidade);
}else{
$programaFidelidade[0]->setIdCliente($param['idCliente']);
$programaFidelidade[0]->setIdProgramaFidelidade($param['programa']);
$em->merge($programaFidelidade[0]);
}
$em->flush();
$this->retorno_json(true, true);
答案 0 :(得分:0)
通常我会这样做:
$em = getEntityManager();
$programaFidelidade = $em->getRepository('AppBundle:ProgramaFidelidadeClientes')->find($param['idCliente']);
if (null == $programaFidelidade) {
$programaFidelidade = new ProgramaFidelidadeClientes;
$programaFidelidade->setIdCliente($param['idCliente']);
$programaFidelidade->setIdProgramaFidelidade($param['programa']);
$em->merge($programaFidelidade);
$em->flush();
} else {
$programaFidelidade->setIdCliente($param['idCliente']);
$programaFidelidade->setIdProgramaFidelidade($param['programa']);
$em->merge($programaFidelidade);
$em->flush();
}
我已经使用名称和命名空间调用存储库,如下所示:AppBundle:ProgramaFidelidadeClientes
但我不知道在您的应用中是否有另一个包或不同的名称。