我在问题中找到了解决方法 在cakephp2中使用原始SQL
可以介绍一下如何在cakephp中运行原始sql。
我在CakePHP2旧版代码中维护代码。
我的问题是我想在CakePHP2中的app / Console / Command / oriten.php中创建简单的CRUD。oriten.php是我在该文件内部创建的文件
目标是创建和更新功能的功能
但是我不知道如何在CLI中的CakePHP2中创建CRUD我在Cakephp2中没有经验,数据库$ this-> Model-> save()的工作流程如何 save()格式数组,使用saveAll()在蛋糕php中保存多个数组 带有多个条目的格式以保存在cakephp2中 并导入模型并在cakephp2中的cmd文件中运行文件 有可能做到这一点吗?
应用程序的目标是使与模型和 填充数据库并更新数据库。
问题1我没有将id用作主键,而使用了3个不同的主键
问题2不使用id来查找更新数据库值的列
问题3如何在app / Console / Command / oriten.php的cmd oriten.php中运行文件,我认为使用cake命令来运行命令功能是可能的
问题4对于$ this-> Modelname-> save()具有单个条目的数组格式如何。
问题5如何为$ this-> Modelname-> saveAll()设置多个条目的多个数组。
我开始阅读cakephp2的文档。 尝试在网络上找到一些教程来学习cakephp2
了解模型的工作原理并建立与数据库的连接。
app/Console/Command/oriten.php
oriten.php
?php
/**
* AppShell file
*
* CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
* @link https://cakephp.org CakePHP(tm) Project
* @since CakePHP(tm) v 2.0
* @license https://opensource.org/licenses/mit-license.php MIT License
*/
use App\Controller\AppController;
App::uses('Shell', 'Console');
App::import('Model','Oriten');
/**
* Application Shell
*
* Add your application-wide methods in the class below, your shells
* will inherit them.
*
* @package app.Console.Command
*/
App:import('Model','Oriten');
class oriten extends Shell {
public function create () {
$oriten = array(
'TARGET_DATE' =>'20190528',
'RACE_NUMBER' => 1,
'TEIBAN' => 1,
'RAP' => '20.12',
'ROLL' => '20.12',
'STRAIGHT' => '20.12',
'RESIST_TIME' => '2019',
'UPDATE_TIME' => '20190614'
);
$this->Oriten->save($oriten);
}
public function update() {
//update
}
}
My Model my Created File
app/Model/Oriten.php
<?php
class Oriten extends AppModel {
public $useDbConfig = 'test';
public $useTable = 'oriten';
public $primaryKey = 'TARGET_DATE';
}
app/Config/database.php
database.php
<?php
/**
* CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
* @link https://cakephp.org CakePHP(tm) Project
* @package app.Config
* @since CakePHP(tm) v 0.2.9
* @license https://opensource.org/licenses/mit-license.php MIT License
*/
/**
* Database configuration class.
*
* You can specify multiple configurations for production, development and testing.
*
* datasource => The name of a supported datasource; valid options are as follows:
* Database/Mysql - MySQL 4 & 5,
* Database/Sqlite - SQLite (PHP5 only),
* Database/Postgres - PostgreSQL 7 and higher,
* Database/Sqlserver - Microsoft SQL Server 2005 and higher
*
* You can add custom database datasources (or override existing datasources) by adding the
* appropriate file to app/Model/Datasource/Database. Datasources should be named 'MyDatasource.php',
*
*
* persistent => true / false
* Determines whether or not the database should use a persistent connection
*
* host =>
* the host you connect to the database. To add a socket or port number, use 'port' => #
*
* prefix =>
* Uses the given prefix for all the tables in this database. This setting can be overridden
* on a per-table basis with the Model::$tablePrefix property.
*
* schema =>
* For Postgres/Sqlserver specifies which schema you would like to use the tables in.
* Postgres defaults to 'public'. For Sqlserver, it defaults to empty and use
* the connected user's default schema (typically 'dbo').
*
* encoding =>
* For MySQL, Postgres specifies the character encoding to use when connecting to the
* database. Uses database default not specified.
*
* sslmode =>
* For Postgres specifies whether to 'disable', 'allow', 'prefer', or 'require' SSL for the
* connection. The default value is 'allow'.
*
* unix_socket =>
* For MySQL to connect via socket specify the `unix_socket` parameter instead of `host` and `port`
*
* settings =>
* Array of key/value pairs, on connection it executes SET statements for each pair
* For MySQL : http://dev.mysql.com/doc/refman/5.6/en/set-statement.html
* For Postgres : http://www.postgresql.org/docs/9.2/static/sql-set.html
* For Sql Server : http://msdn.microsoft.com/en-us/library/ms190356.aspx
*
* flags =>
* A key/value array of driver specific connection options.
*/
class DATABASE_CONFIG {
public $test = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'oriten',
'prefix' => '',
//'encoding' => 'utf8',
);
}
MYSQl database
TARGET_DATE char(8) NULL Primary key
RACE_NUMBER int NULL primary key
TEIBAN int NULL Primary key
RAP varchar(6) NULL
ROLL varchar(6) NULL
STRAIGHT varchar(6) NULL
RESIST_TIME char(14) NULL
UPDATE_TIME char(14) NULL
尝试在cakephp2的cmd中运行文件 c:\ cakephp \ app \ Console \ Command> php oriten.php
错误: 未捕获的错误:在“
”中找不到类“ App”