Я создаю программное обеспечение, в котором руководитель хора может управлять несколькими хорами.
Я пытаюсь вернуть всех участников, связанных с определенной группой хора.Поэтому, когда руководитель хора выбирает конкретное место хора, он видит всех участников, связанных с этим местом.
У меня есть таблица aauth_users и таблица choir_locations_to_users в базе данных MySQL.
таблица aauth_users содержит все данные, относящиеся к каждому члену хора:
Таблица choir_locations_to_users представляет собой отдельную таблицу, в которой перечислены идентификатор пользователя и идентификатор расположения хора.
Я выполняю запрос, чтобы получить необходимые данные, необходимые для отображения всех участников.например, имя участника, аватар и т. д. для отображения на странице расположения хора.
Параметром $ id в функции является идентификатор расположения хора.
public function get_choirlocation_members($id) {
// $query = 'SELECT aauth_users.full_name, aauth_users.avatar, aauth_users.last_login, choir_location_to_users.location_id FROM aauth_users, choir_location_to_users WHERE aauth_users.id = choir_location_to_users.user_id ';
$this->db->select('aauth_users.full_name, aauth_users.avatar, aauth_users.last_login, aauth_users.id, choir_location_to_users.location_id');
$this->db->from('aauth_users, choir_location_to_users');
$this->db->where('aauth_users.id = choir_location_to_users.user_id');
$this->db->order_by('aauth_users.last_login', 'DESC');
$members = $this->db->get();
foreach ($members->result() as $row) {
if($row->location_id == $id){
return $members;
}
}
}
Приведенный выше запрос возвращает следующие результаты:
Проблема заключается в том, что после запроса функция возвращает все элементы, а , а не только элементы, связанные с этим местоположением.например, когда я делаю другой foreach в моем View File с результатом, я все равно вижу всех участников.
foreach ($members->result() as $row): ?>
<li>
<img class="profile-user-img img-responsive img-circle" src="<?php echo BASE_URL.'uploads/user/'.$row->avatar ?>" alt="User Image">
<a class="users-list-name" href="#"><?php echo $row->full_name ?></a>
<span class="users-list-date">Last Login: <?php echo date ( "d.m.Y " , strtotime ($row->last_login )); ?></span>
</li>
<?php endforeach; ?>
Я был бы очень признателен за любую помощь, чтобы указать, где я могу ошибаться при попытке отфильтровать запросрезультаты показывают только участников, связанных с определенным местоположением хора на основе идентификатора местоположения.
ОБНОВЛЕНИЕ Anwser из @Dinesh Али здесь не работает, вот что у меня есть:
Я протестировал новыйПрисоединитесь к Query, который вы предложили в phpMyAdmin, и это результат:
Как вы видите, он возвращает правильные данные в таблицу результатов, что хорошоПоэтому я добавил предложенную вами функцию следующим образом:
public function get_choirlocation_members($id) {
$this->db->select('aauth_users.full_name, aauth_users.avatar, aauth_users.last_login, aauth_users.id, choir_location_to_users.location_id');
$this->db->from('aauth_users');
$this->db->join('choir_location_to_users', 'aauth_users.id = choir_location_to_users.user_id');
$this->db->where('aauth_users.id = choir_location_to_users.user_id');
$this->db->order_by('aauth_users.last_login', 'DESC');
$members = $this->db->get()->result();
if(isset($members) && count($members) > 0){
return $members;
}else{
return false;
}
}
Затем, на мой взгляд, Файл, я использую следующее, чтобы показать каждого пользователя как элемент списка LI:
foreach ($members as $row): ?>
<li>
<img class="profile-user-img img-responsive img-circle" src="<?php echo BASE_URL.'uploads/user/'.$row->avatar ?>" alt="User Image">
<a class="users-list-name" href="<?php echo BASE_URL.'administrator/user/view/'.$row->id ?>"><?php echo $row->full_name ?></a>
<span class="users-list-date">Last Login: <?php echo date ( "d.m.Y " , strtotime ($row->last_login )); ?></span>
</li>
<?php endforeach; ?>
Нокаждый пользователь все еще показывает, что у меня есть 3 пользователя, и у меня есть только один пользователь, связанный с каждым местоположением, поэтому я ожидаю увидеть только один результат в представлении?