La solution consiste toujours à utiliser UNION si vous souhaitez combiner les résultats de deux tableaux différents. Voir aussi https://dev.mysql.com/doc/refman/5.7/en/union.html
Voici un exemple simple d'UNION pour votre cas :
<?php
public function retrieve_products_users_by_username($this_user) { // place this function into your model
$this->db->where('username',$this_user);
$this->db->select('id');
$this->db->limit(1);
$query_for_this_user = $this->db->get('users'); // whatever table you store the admin_1
$this_user_id = $query_for_this_user->row_array()['id'];
$this->db->select('products.id_admin as id_admin ,products.title as column1, products.icon as column2, products.descrption as column3 ...');
$this->db->from('products');
$products_query = $this->db->get_compiled_select();
$this->db->select('users.id_admin as id_admin ,users.username as column1, users.profile_picture as column2, users.address as column3 ...');
$this->db->from('users');
$users_query = $this->db->get_compiled_select();
$query = $this->db->query('SELECT * FROM (' . $products_query . ' UNION ' . $users_query . ') AS u WHERE u.id_admin='.$this_user_id);
return $query->result_array();
}
?>
J'ai écrit cette fonction avec une quantité limitée d'informations que vous avez fournies dans votre question et vos commentaires. Elle pourrait être un peu différente en réalité, selon les noms des colonnes de votre table, etc.
Quoi qu'il en soit, lorsque vous avez entièrement préparé cette fonction dans votre modèle, vous pouvez l'appeler à partir de votre contrôleur comme ceci :
<?php
$this->data['results'] = $this->YOURMODELNAME_model->retrieve_products_users_by_username('admin_1');
?>
Comme je l'ai dit UNION est votre solution. JOINDRE n'est pas votre solution car :
- JOINDRE concatène simplement deux tableaux horizontalement
- UNION concatène simplement deux tableaux verticalement