วันเสาร์ที่ 3 ตุลาคม พ.ศ. 2558

YII2 composer.json สำหรับการเริ่มต้นโปรแกรม

php composer.phar create-project yiisoft/yii2-app-basic basic 2.0.6


composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic

แล้วไม่ทำงานติด bower/xxxx/dist


///


composer global update

///


rm -rf /root/.composer/*
composer global require "fxp/composer-asset-plugin:~1.0"

///


แก้ไฟล์ composer.json  ตรงสีแดง
{
  "name": "sample/self",
  "description": "sample",
  "minimum-stability": "dev",
  "require": {
    "php": ">=5.4.0",
    "yiisoft/yii2": "*",
    "yiisoft/yii2-bootstrap": "*",
    "yiisoft/yii2-swiftmailer": "*",
    "asofter/yii2-imperavi-redactor": "*",
    "yiisoft/yii2-imagine": "*",
    "2amigos/yii2-grid-view-library": "*",
    "2amigos/yii2-file-upload-widget": "*",
    "2amigos/yii2-date-time-picker-widget": "*",
    "2amigos/yii2-file-input-widget": "*",
    "2amigos/yii2-bootstrap-form-helpers-library": "*",
    "creocoder/yii2-nested-set-behavior": "*",
    "yiisoft/yii2-jui": "*",
    "2amigos/yii2-disqus-widget": "*",
  },
  "require-dev": {
    "yiisoft/yii2-codeception": "*",
    "yiisoft/yii2-debug": "*",
    "yiisoft/yii2-gii": "*"
  },
  "scripts": {
    "post-create-project-cmd": [
      "yii\\composer\\Installer::setPermission"
    ]
  },
  "config": {
    "process-timeout": 1800
  },
  "extra": {
    "writable": [
      "runtime",
      "web/media",
      "web/assets"
    ],
    "executable": [
      "yii"
    ],
    "asset-installer-paths": {
      "npm-asset-library": "vendor/npm",
      "bower-asset-library": "vendor/bower",
 "bower-asset/jquery": "@stable",
    "bower-asset/bootstrap": "@stable",
    "bower-asset/jquery-ui": "@stable",
    "bower-asset/jquery.inputmask": "@stable",
    "bower-asset/punycode": "@stable"
} } }

วันศุกร์ที่ 31 ตุลาคม พ.ศ. 2557

[ Yii ] การ Full Database Backup SQL file ด้วย บน Yii Framework

ก่อนอื่นเลยคุณต้องไปสร้างไฟล์

<?php
//  File : protected/components/Backup.php

class Backup {
    public static function database($filepath, $tables = '*') {
        if ($tables == '*') {
            $tables = array();
            $tables = Yii::app()->db->schema->getTableNames();
        } else {
            $tables = is_array($tables) ? $tables : explode(',', $tables);
        }
        $return = '';

        foreach ($tables as $table) {
            $result = Yii::app()->db->createCommand('SELECT * FROM ' . $table)->query();
            $return.= 'DROP TABLE IF EXISTS ' . $table . ';';
            $row2 = Yii::app()->db->createCommand('SHOW CREATE TABLE ' . $table)->queryRow();
            $return.= "\n\n" . $row2['Create Table'] . ";\n\n";
            foreach ($result as $row) {
                $return.= 'INSERT INTO ' . $table . ' VALUES(';
                foreach ($row as $data) {
                    $data = addslashes($data);

                    // Updated to preg_replace to suit PHP5.3 +
                    $data = preg_replace("/\n/", "\\n", $data);
                    if (isset($data)) {
                        $return.= '"' . $data . '"';
                    } else {
                        $return.= '""';
                    }
                    $return.= ',';
                }
                $return = substr($return, 0, strlen($return) - 1);
                $return.= ");\n";
            }
            $return.="\n\n\n";
        }
        //save file
        $handle = fopen($filepath, 'w+');
        fwrite($handle, $return);
        fclose($handle);
    }
}
?>

เสร็จแล้วเราสามารถเรียกใช้งานง่ายๆด้วยคำสั่งนี้

Backup::database(dirname(__FILE__).'/../_backup/db'.date('Y.m.d_H.i.s').'.sql','*');

เห็นเครื่องหมาย '*' ไหม นั่นหมายถึง ชื่อ Table ครับ ถ้าหากเราต้องการทั้งหมดก็ใส่ '*' แต่ถ้าเราอยากได้บาง table เราก็ใส่ลงไปเลย เช่น 'user'