Codeigniter:如何为相关表进行嵌套选择

时间:2014-06-28 17:19:02

标签: php mysql sql codeigniter codeigniter-datamapper

我的数据库中有两个表用于“LOUNGES”,一个表用于“CITIES”。它们之间没有明确的联系。我的意思是我没有在“LOUNGES TABLE”中放置一个“city_id”列。我只需从“CITIES”中选择“名称”列,然后选择它作为“LOUNGE”。

我正在使用Codeigniter和DataMapperPHP,所以目前我在lounge.php中的索引函数列出了“CITIES”表中的所有“CITIES”,我有一个名为“search”的列,这是一个名为在lounge.php中的功能名称,从那里我很容易说“哪里('城市','伦敦'),我在伦敦的所有休息室都列出了它。

我的问题是如何让它变得更好。我的意思是让它只有一个功能“视图”,例如,当我必须添加一个新城市时,我不需要添加一个带有城市名称的新功能而自动生成链接?

任何想法如何运作?

这是在代码中看到整个事情的一个例子:

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 个答案:

答案 0 :(得分:1)

我找到了更好的方法。我在2个表之间建立了连接,并且我使用URI从链接获取段,该链接也在查询中仅选择来自城市的休息室。

现在问起来似乎是一个愚蠢的问题......