php - remove - ¿Cómo hacer unirte a Doctrina?
remove html tags php (1)
Si tiene una asociación en una propiedad que apunta al usuario (digamos Credit/Entity/UserCreditHistory#user
, escogida de su ejemplo), la sintaxis es bastante simple:
public function getHistory($users) {
$qb = $this->entityManager->createQueryBuilder();
$qb
->select(''a'', ''u'')
->from(''Credit/Entity/UserCreditHistory'', ''a'')
->leftJoin(''a.user'', ''u'')
->where(''u = :user'')
->setParameter(''user'', $users)
->orderBy(''a.created_at'', ''DESC'');
return $qb->getQuery()->getResult();
}
Ya que está aplicando una condición en el resultado unido aquí, usar LEFT JOIN
o simplemente JOIN
es lo mismo.
Si no hay ninguna asociación disponible, la consulta se parece a la siguiente
public function getHistory($users) {
$qb = $this->entityManager->createQueryBuilder();
$qb
->select(''a'', ''u'')
->from(''Credit/Entity/UserCreditHistory'', ''a'')
->leftJoin(
''User/Entity/User'',
''u'',
/Doctrine/ORM/Query/Expr/Join::WITH,
''a.user = u.id''
)
->where(''u = :user'')
->setParameter(''user'', $users)
->orderBy(''a.created_at'', ''DESC'');
return $qb->getQuery()->getResult();
}
Esto producirá un conjunto de resultados que se parece a lo siguiente:
array(
array(
0 => UserCreditHistory instance,
1 => Userinstance,
),
array(
0 => UserCreditHistory instance,
1 => Userinstance,
),
// ...
)
Esta es mi función donde estoy tratando de mostrar la historia del usuario. Para esto necesito mostrar los créditos actuales del usuario junto con su historial de crédito.
Esto es lo que estoy tratando de hacer:
public function getHistory($users) {
$qb = $this->entityManager->createQueryBuilder();
$qb->select(array(''a'',''u''))
->from(''Credit/Entity/UserCreditHistory'', ''a'')
->leftJoin(''User/Entity/User'', ''u'', /Doctrine/ORM/Query/Expr/Join::WITH, ''a.user = u.id'')
->where("a.user = $users ")
->orderBy(''a.created_at'', ''DESC'');
$query = $qb->getQuery();
$results = $query->getResult();
return $results;
}
Sin embargo, me sale este error:
[Error de sintaxis] línea 0, columna 98: Error: Doctrine / ORM / Query / Lexer :: T_WITH esperado, se ha activado
Edición : reemplacé ''ON'' con ''WITH'' en la cláusula de unión y ahora lo que veo es solo 1 valor de la columna unida.