如何在CAKEPHP2中制作简单的CRUD CLI

时间:2019-06-14 07:33:47

标签: cakephp cakephp-2.x

我在问题中找到了解决方法 在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”

0 个答案:

没有答案