如何从标题的数据库中获取所有类别?

时间:2018-12-04 09:13:27

标签: php database render

我有一个header.php,其中有顶部导航。在此导航中,我有一个下拉菜单,其中提供了数据库表categories(id, category)中的所有类别。

这是标题的一部分:

<div class="dropdown">
 <button class="dropbtn">
  <a 
   href="http://localhost:8888/blog/public/index.php/categories"
   title="Categories">
      Categories
  </a>
 </button>
 <div class="dropdown-content">
  <?php foreach ($categories as $cat): ?>
   <a 
    href="http://localhost:8888/blog/public/index.php/categories/
    <?php echo e($cat['category']); ?>">
     <?php echo e($cat->category);?>
  </a>
 <?php endforeach; ?>
</div>

下一个函数在我的CategoryRepository.php中,并从数据库中获取所有类别:

public function allCategories()
{
 $table = $this->getTableName();
 $model = $this->getModelName();

 $stmt = $this->pdo->query("SELECT * FROM `$table`");
 $allCategories = $stmt->fetchAll(PDO::FETCH_CLASS, $model);
 return $allCategories;
}

导航中的foreach我需要此功能,问题是我必须输入以下代码:

$categories = $this->categoryRepository->allCategories();

在Controller中的每个函数中,都会为博客提供一个新的站点;这是一个例子:

public function index()
{
 $categories = $this->categoryRepository->allCategories();
 $posts = $this->postsRepository->all(); 
 $this->render("post/index", [
  'posts' => $posts,
  'categories' => $categories,
 ]);
}

是否有可能我没有被迫将此代码行放在新站点的每个函数中?

我已经尝试将其放在__construct中,但是不知何故。

1 个答案:

答案 0 :(得分:0)

$fields = $this->db->list_fields($table); // gives you category `like(id, category,name)`

然后您可以管理所需的内容,

for ($i = 0; $i < count($fields); $i++) {
   $fields[$i] = str_replace('_', ' ', $fields[$i]);
   `$fields[$i] = ucwords($fields[$i]);`
}
return array('schema' => array_values($fields));