加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在CakePHP中创建自定义MySQL查询?

发布时间:2020-12-13 14:07:56 所属栏目:PHP教程 来源:网络整理
导读:我想在Cakephp中创建自己的 MySQL查询. 这是我的LocationsController.php: ?phpApp::uses('Location','Model');class LocationsController extends AppController{ public $helpers = array('Html','Form'); function index() { $this-loadModel("Location"
我想在Cakephp中创建自己的 MySQL查询.

这是我的LocationsController.php:

<?php
App::uses('Location','Model');
class LocationsController extends AppController
{
    public $helpers = array('Html','Form');
    function index()
    {
        $this->loadModel("Location");
        $this->Location->get();
    }
}

这是我的LocationModel.php:

<?php
App::uses('AppModel','Model');
class LocationModel extends Model {

    public $name = 'Location';

    public function get()
    {
        $this->Location->query("SELECT * FROM locations;");
    }
}

正如您所看到的,我只是尝试执行一个简单的查询,但它不起作用.我收到此错误:

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error 
in your SQL syntax; check the manual that corresponds to your MySQL server 
version for the right syntax to use near 'get' at line 1

当我使用诸如find(“all”)之类的魔术方法时,它可以工作……

你能看出问题所在吗?我真的不能,我只是想做一个简单的任务!

您的位置模型的类名应该是Location,而不是LocationModel.

因此,CakePHP将为Locations数据库表生成一个“通用”模型,并使用该模型而不是您自己的模型.由于此通用模型没有get()方法,因此它将执行get作为SQL语句,从而导致错误

此外,在模型内部,您不应使用$this-> Location-> query();,而只需使用$this-> query();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读