MVC 从数据库和显示中简单选择计数说明


MVC simple select count from db and display explained

我是第一次使用 MVC 并为个人开发开发库应用程序。我正在使用此处找到的 php 登录名。我是 php 和 sql 的新手,所以对任何业余编码表示歉意,我已经自学了 php。

在过去的两周里,我一直在阅读,并试图弄清楚如何完成最简单的任务。也许是我正在使用的MVC,或者只是我无法弄清楚。我发现自己将代码块从一个模型/视图/控制器复制到下一个模型/视图/控制器,以实现我想要的结果,但这并不理想,因为我想知道代码的作用,否则我不会学习。

我一直在做很多独立阅读和在线教程,但其中大多数都是针对CodeIgniter或CakePhp的,因此语法是不同的。我知道,一旦我最终掌握了语法和逻辑,那么我就不会有任何问题。

我将在下面使用一个简单的示例作为参考。希望有人能够为我阐明这一点并帮助我。

我今天一整天都在尝试选择表中的行数,并将其显示在用户配置文件页面上为"您有这个收藏夹数量:x"。

据我了解,我在模型中创建了favouriteTotal()查询。然后我引用这是控制器并渲染视图?使用 PDO 连接到数据库。

登录.php(模型)

class LoginModel
{
    public function favouriteTotal()
    {
        $query = $this->db->prepare("SELECT COUNT(*) FROM favourite");
        $query->execute();
        $count = $query->rowCount()       
    }
}

登录.php(控制器)

class Login extends Controller
{
    function showProfile()
    {
        $login_model = $this->loadModel('Login');
        $login_model->favouriteTotal();
        $this->view->render('login/showprofile');
    }
}

显示配置文件.php (查看)

<div>
    Your have this number of favourites: <? NUMBER OF FAVS HERE ?>
</div>

这是关于它通常如何工作的一般性答案......如果您需要特定的答案,请告诉我们您正在使用什么框架。

许多MVC应用程序使用ViewBag,一种"容器",它被传递到正在渲染的视图。

(更新了下面的代码,以反映使用的框架如何将数据传递到视图)

登录.php(控制器)

class Login extends Controller
{
    function showProfile()
    {
        $login_model = $this->loadModel('Login');
        $this->view->count = $login_model->favouriteTotal();
        $this->view->render('login/showprofile');
    }
}

显示配置文件.php (查看)

<div>
    Your have this number of favourites: <?php echo $this->count; ?>
</div>

因此,在控制器中,您将$login_model->favouriteTotal()的值分配给$this->view->count 。然后呈现视图。在该视图中,调用 $this->count 来访问以前发送的数据。