模型表CakePHP 3使用现有表

时间:2015-11-20 09:20:26

标签: cakephp model cakephp-3.0

您需要帮助才能了解CakePHP中的某些功能。

我有一个SQL表:用户。 我生成了烘焙模型: UserTable

UsersController home()操作中,我有:

<activity android:name="com.shared.app.SharedMain"
    android:label="@string/MicMainName" >

查询由Cake生成,此代码运行良好。

我的问题是:

  • 我必须在模型中创建函数findByLogin吗?
  • 我的代码是否正确?

感谢您的帮助;)

2 个答案:

答案 0 :(得分:1)

检查代码是否正确的最快方法之一是实际运行它并查看它是否返回您期望的内容。

findByLogin()是一个蛋糕dynamic finder所以你不需要定义这个方法,因为Cake动态地为你做这个。您可以使用findBy为任何带有驼峰的列名添加前缀,以使用该列查询表。

您可以像这样使用它: -

$t_Results = $this->Users->findByLogin('jdupont')->first();

答案 1 :(得分:1)

是的,你可以在你的模型中创建一个findByLogin,但你不必这样做。

您的代码有效,但不尊重约定。 在CakePHP 3中 SQL表是单数小写, 表格文件有上面的第一个字母和复数后缀表格, 控制器是多个第一个字母上部,后缀为Controller。

如果您在控制器中遵循这些约定,则可以执行以下操作:

$t_Results = $this->Users->findByLogin('jdupont')->execute()->fetchAll('assoc');
debug($t_Results);

您不必使用 - &gt; execute()。查询对象被延迟评估,当您使用请求时将调用execute。