Codeigniter: как сделать вложенный выбор для связанных таблиц

#php #mysql #sql #codeigniter #codeigniter-datamapper

#php #mysql #sql #codeigniter #codeigniter-datamapper

Вопрос:

В моей базе данных есть две таблицы, одна для «ЗАЛОВ ОЖИДАНИЯ», а другая для «ГОРОДОВ». Между ними нет явной связи. Я имею в виду, что я не поместил столбец «city_id» в «ТАБЛИЦУ ЗАЛОВ ОЖИДАНИЯ». Я просто беру столбец «name» из «CITIES» и выбираю его для «LOUNGE».

Я использую Codeigniter и DataMapperPHP, поэтому на данный момент я использую функцию index в lounge.php перечисляет все «ГОРОДА» из таблицы «ГОРОДА», и у меня есть столбец с именем «поиск», который является именем имени функции в lounge.php и оттуда это легко, я просто говорю » .где (‘city’, ‘London’) и у меня есть все залы ожидания в Лондоне, где он указан.

Мой вопрос в том, как сделать это лучше. Я имею в виду сделать так, чтобы иметь только одну функцию «просмотр», например, и ссылки, которые будут генерироваться автоматически, без необходимости добавлять новую функцию с названием города, когда мне нужно добавить новый город?

Есть идеи, как это должно работать?

Это пример того, как все это можно увидеть в коде:

 public function index()
 {
   $cities = new City_model();
$cities->where('active', '1')->order_by('id', 'ascen')->get();

$recent_cities = array();
foreach ($cities as $city)
{
  $single_city = array
  (
    'id' => $city->id,
    'city_name' => $city->city_name,
    'search' => $city->search,
  );
  array_push($recent_cities, $single_city);
}

$data = array
(
  'cities' => $recent_cities,
  'main_content' => 'templates/city_lounges',
  'active_state' => 'lounge',
);

$this->parser->parse('template_main', $data);
 }

public function london()
{
$lounges = new Lounge_model();
$lounges->where('city', 'London')->order_by('date_added', 'desc')->get();

$recent_lounges = array();
foreach ($lounges as $lounge)
  {
  $id = $lounge->id;
  $fetch_slug = $lounge->club_slug;

  $trimpdate = $lounge->date_added;
  $date = explode(" ", $trimpdate);


  $single_lounge = array
  (
    'id' => $lounge->id,
    'club_name' => $lounge->club_name,
    'club_logo' => $lounge->club_logo,
    'facebook_page' => $lounge->facebook_page,
    'date_added' => $date[0],
    'city' => $lounge->city,
  );
  array_push($recent_lounges, $single_lounge);
}

$data = array
(
  'lounges' => $recent_lounges,
  'main_content' => 'templates/content_lounges',
  'active_state' => 'lounge',
);

// Parse it to the template
$this->parser->parse('template_main', $data);
}
  

Комментарии:

1. пожалуйста, добавьте табличную структуру обеих таблиц

Ответ №1:

Я нашел лучший способ сделать это. Я установил соединение между 2 таблицами и использую URI, чтобы получить сегмент из ссылки, которая также идет в запросе, чтобы выбрать только залы ожидания из городов.

Теперь это кажется глупым вопросом…