gpt4 book ai didi

cakephp:如何在模型中使用 find 语句而不是 Controller

转载 作者:行者123 更新时间:2023-12-02 16:02:59 25 4
gpt4 key购买 nike

我读到了“胖模型和瘦 Controller ”的概念。我当然愿意遵循这个概念。

现在,我所有的 Controller 都很胖,而我的模型都很瘦。我在 Controller 中有很多 find stmts(查询),我想将它们转移到模型中。但我不知道该怎么做。

我应该将 find 语句放在模型的哪个函数中?在模型中设置 stmts 后,我是否能够自动在相应 View 中查看该数据?

有人能给我举个例子吗?我已经浏览过 cakephp 食谱博客示例。在那里,查找命令位于 Controller 而不是模型中。该模型仅包含关系和验证。我还没有看到包含 find stmts 的模型示例。

最佳答案

已给出的答案回答了您的部分问题。您可以在没有 Model 类声明的情况下使用 find 方法(因此用 $this->find() 而不是 $this->Model->find())。

为了遵循“胖模型,瘦 Controller ”原则,您的模型应该包含应用程序的大部分业务逻辑,而 Controller 则处理 View 使用的模型中的数据。

因此,如果您希望模型中发生所有 find 逻辑,您应该执行以下操作。

产品.php:

<?php
class ProductModel extends AppModel {
//Associations, etc. go here

function getProducts($limit=5) {
$products = array();
$products = $this->find('all', array('limit' => $limit));
return $products;
}
}
?>

请注意,您不能在模型中使用 $this->set(),您应该在 Controller 中使用它:

产品 Controller .php:

<?php
class ProductsController extends AppController {
//Components, helpers, etc. go here

function index() {
$products = $this->Product->getProducts(10);
$this->set('products', $products);
}
}
?>

填充的 $products 变量(如果相关数据库表中有记录)现在将在您的 View 中可用。

This is a great article详细介绍了 Cake 的概念,食谱中还有另一个关于 MVC in general 的内容。 .

关于cakephp:如何在模型中使用 find 语句而不是 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8222868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com