/**
* @param $data
* @param $entity
* @param $primaryId
* @return QueryBuilder
*/
public function getQueryBuilderForEntity($data, $entity, $primaryId)
{
$metaData = $this->modelManager->getClassMetadata($entity);
$table = $metaData->table['name'];
$builder = $this->getQueryBuilder();
if ($primaryId) {
$id = $builder->createNamedParameter($primaryId, \PDO::PARAM_INT);
$builder->update($table);
//update article id in case we don't have any field for update
$builder->set('id', $id);
$builder->where('id = ' . $id);
} else {
$builder->insert($table);
}
foreach ($data as $field => $value) {
if (!array_key_exists($field, $metaData->fieldMappings)) {
continue;
}
$key = $this->connection->quoteIdentifier($metaData->fieldMappings[$field]['columnName']);
$value = $this->getNamedParameter($value, $field, $metaData, $builder);
if ($primaryId) {
$builder->set($key, $value);
} else {
$builder->setValue($key, $value);
}
}
return $builder;
}