在何处定义mvc模式(PHP)中的查询条件

在何处定义mvc模式(PHP)中的查询条件,php,model-view-controller,design-patterns,Php,Model View Controller,Design Patterns,我有一个设计问题。我考虑了很长一段时间,但无法决定如何正确地执行它(也许顶部的存储库是一个更好的选择…) 我构建了自己的mvc模式,我问自己,我应该在哪里为我的查询设置条件?比如说: UserModel具有函数getByUsername($username)。在本例中,我将在模型的函数中设置查询的WHERE子句 另一种方法可以是getByUsername($username,$where=[])。有了这个,我可以选择在哪里设置where子句。我可以在UserController中设置它并将其传递

我有一个设计问题。我考虑了很长一段时间,但无法决定如何正确地执行它(也许顶部的存储库是一个更好的选择…)

我构建了自己的mvc模式,我问自己,我应该在哪里为我的查询设置条件?比如说:

UserModel具有函数getByUsername($username)。在本例中,我将在模型的函数中设置查询的WHERE子句

另一种方法可以是getByUsername($username,$where=[])。有了这个,我可以选择在哪里设置where子句。我可以在UserController中设置它并将其传递给函数

这是我的问题:在这种情况下,什么是最佳做法?令人沮丧的是,我使用的函数有不同的WHERE子句。我应该在模型中使用不同的函数,比如“getByUserName($username)”等等,还是应该继续使用解决方案将这些信息放入控制器中

这不仅影响WHERE子句。此外,列也是一个问题。我不需要每次调用getByUsername函数时都使用相同的列。所以我可以在控制器中设置这些参数,并将其传递给函数


但我认为这不是正确的方法。我的控制器似乎是半个模型…?

它肯定属于模型,但问题是您使用的是dmm还是更多的活动记录方法。你想提取多少。这还取决于您如何定义mvc;)我建议您拥有知道如何访问数据库的模型,以及要求从这些模型获取信息但不知道这些模型如何获取数据的模型。我想要一个实现灵活性和可维护性的良好设计。我的第一个项目过了一会儿就一团糟了。我不想重复这种情况。正因为如此,我尝试了一种我喜欢的mvc方法。具体来说,有很多这样的问题。您的意见是,我应该在我的模型中实现多种功能,如“GetByUserName for[SpecificPage]()”或“GetByUserName where[ABC]()”?另一个带有注释的示例:“getByNews()”和“getByProfile())“等等。。但我仍然对专栏感到困惑。我如何轻松地说出这一点,而不必在控制器中制造混乱?这可能会有帮助:^^^非常好的资源。我要回去重读…它肯定属于一个模型,但问题是你是使用dmm还是更多的活动记录方法。你想提取多少。这还取决于您如何定义mvc;)我建议您拥有知道如何访问数据库的模型,以及要求从这些模型获取信息但不知道这些模型如何获取数据的模型。我想要一个实现灵活性和可维护性的良好设计。我的第一个项目过了一会儿就一团糟了。我不想重复这种情况。正因为如此,我尝试了一种我喜欢的mvc方法。具体来说,有很多这样的问题。您的意见是,我应该在我的模型中实现多种功能,如“GetByUserName for[SpecificPage]()”或“GetByUserName where[ABC]()”?另一个带有注释的示例:“getByNews()”和“getByProfile())“等等。。但我仍然对专栏感到困惑。我如何轻松地说出这一点,而不必在控制器中制造混乱?这可能会有帮助:^^^非常好的资源。我要回去重读。。。