我想在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();