get_record datos de otra tabla

ESL_Kaiser

Buenas a todos, estoy intentando sacar un dato de una tabla de base de datos para luego enviarlo por email a modo información, el típico formulario de registro que envías con todos los datos cuando un usuario se registra.

Tengo todos los datos que quiero con:

$DB->get_record('user', array('id'=>$user->id));  

con esto puedo sacar nombre apellidos email etc y se envían automáticamente cuando se da de alta en el sitio, el problema está en que tengo otra tabla con datos opcionales que se pueden añadir y quiero sacar esa también, los campos son personalizados en plan, de que equipo eres, o que móvil tienes... Y como está otra tabla que se llama info_data, no se como hacer para que coja los campos adicionales del usuario en cuestión y me lo devuelva en el email, alguien me echa un cable por favor? La id de la tabla de usuarios coincide con el userid de la tabla info_data y es PHP gracias!

ESL_Kaiser

nadie que me pueda echar una mano con esto?

APOCa

Pues haciendo un

$DB->get_records('info_data', array('userid'=>$user->id));

1 respuesta
Traber

¿Sabes lo que es un JOIN?

1 respuesta
ESL_Kaiser

#3 así lo tengo, pero no me funciona, no me saca el dato

#4 no, pero si me lo explicas te lo agradezco

1 respuesta
Troyer

#1

$sql = "SELECT *.u, *.e FROM user u LEFT JOIN info_data e ON u.user_id = e.user_id";

$DB->execute($sql, null);

Si me dices exactamente como son las tablas te lo hago.

Traber

#5 Entonces lo que deberías empezar es por aprender y comprender el funcionamiento de las bases de datos relacionales.

Básicamente, para poder saber cómo hacer algo, primero debes saber exáctamente lo que quieres hacer. En este caso, lo que quieres es un join de los datos, dado que quieres los datos de una tabla (user) con los datos externos (info_data) interrelacionados con dicha tabla, y eso en una base de datos relacional se conoce como JOIN.

Un JOIN es la inclusión de otra tabla en la computación de la consulta, en la que se ha de indicar qué relación hay entre esas 2 tablas.

APOCa

Es moodle, no?

1 respuesta
ESL_Kaiser

#8 si!

APOCa

Pues segun la doc con get_records, como he puesto antes, debe de funcionar

https://docs.moodle.org/dev/Data_manipulation_API#moodle_database::get_records.28.29

O si no haz una raw query

https://docs.moodle.org/dev/Data_manipulation_API#moodle_database::get_records_sql.28.29

Y activa el modo debug para ver que pasa

https://docs.moodle.org/dev/Data_manipulation_API#Debug_fuctions

1 respuesta
ESL_Kaiser

#10 voy a ver muchas gracias

B

A mi me gusta tener esta imagen a mano

4

Usuarios habituales