Recibir información de usuario de user_id con Codeigniter

Tengo una cosa que preguntarles a todos. Tengo una clase de modelo que recibe algunos textos de la base de datos. En esta fila también tengo una columna de ID de usuario. Necesito recibir información de usuario con otro archivo de modelo para cada publicación. ¿Cómo puedo hacer esto? ?

Explico lo que quiero: tengo una tabla como esta: id[PK] title content user_id[Foreign Key]

datos de ejemplo: 1 | loreim ipsum | hola su nuevo texto de contenido | 1

también tengo un avatar de nombre de usuario de ID de tabla de usuario [PK]

datos de ejemplo 1 | administrador | avatar.gif

Estoy recibiendo datos de la primera tabla, pero necesito recibir el nombre de usuario y el avatar del usuario del autor. ¿Cómo puedo hacer esto en el controlador?

preguntado el 22 de mayo de 12 a las 19:05

¿Puedes ser más específico por favor? Tal vez también ayudaría publicar los fragmentos de código relevantes. -

1 Respuestas

Puedes utilizar una JOIN, se parece a esto usando CI Clase de registro activo (dependiendo de lo que quieras hacer exactamente):

$query = $this->db->join('users', 'users.id = posts.user_id')->get('posts');
foreach ($query->result() as $row)
{
    echo $row->post_title;
    echo $row->username;
}

También puede consultar la tabla de usuarios por separado para cada publicación y almacenar el objeto de usuario en una propiedad de cada publicación, como:

// foreach $post
$post->user = $this->db->where('id', $post->user_id)->get('users')->row();

... o algo así, solo asegúrese de no ejecutar más consultas de las necesarias (por ejemplo, puede obtener todos los usuarios en una consulta donde la identificación del usuario está en una matriz de identificaciones de usuarios posteriores, sin necesidad de una consulta separada para cada uno publicar si lo haces de esta manera).

También recomendaría considerar un ORM como Mapeador de datos para Codeigniter para eliminar la molestia de escribir uniones y relaciones complejas. Puede parecer excesivo, pero lo prefiero a la clase Active Record de CI (aunque la usa internamente), incluso para proyectos pequeños.

contestado el 22 de mayo de 12 a las 19:05

Gracias señor. ¡Funcionó para mí! Estoy usando el método JOIN en este caso =)) - Kaan Alvés Kılıç

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.