カテゴリ: モデル

ページ: << 1 2 3 4 5 >>

1つのカラムのデータのみ取得する方法

パーマリンク 2008/09/22 18:43:53 著者: cakephp メール
カテゴリ: モデル, コントローラー

CakePHP1.2 RC2

通常の find を利用すると、データを配列で取得できますが、一つのカラムのデータのみが欲しい場合は、下記のようにすると便利です。

$conds = array('id' => 1);
e($this->Sample->field('name', $conds));

これで"samples"テーブルの"id"が"1"の"name"のみを取得することができます。

SSLでSocket通信

パーマリンク 2008/09/17 19:10:59 著者: cakephp メール
カテゴリ: モデル, Behaviors@ビヘイビア

CakePHP1.2 RC2

Webservice Behavior を利用して Socket 通信を行うことが出来ます。

まず、app/models/behaviors/ にこちらのファイルを設置します。

次に、Model で Webservice Behavior を呼び出すようにします。

var $actsAs = array('Webservice');


最後に Controller の Action 内に処理内容を書きます。

$options = array();
$options['port'] = '443';
$options['request']['uri']['scheme'] = 'https';
$result = $this->Test->request('post', array('data' => $data, 'url' => $url, 'options' => $options));

$url : 通信先のURL
$data : 通信先に渡したいデータの配列

これで SSL の Socket 通信を行うことができます。

テーブルのカラム名を一発で取得する方法

パーマリンク 2008/09/16 16:59:53 著者: cakephp メール
カテゴリ: モデル

CakePHP1.2 RC2

テーブルのカラム名を全て取得するには、Model 内で下記のように書くことで取得できます。

$columns = array_keys($this->getColumnTypes());

PostgreSQL のINFORMATION_SCHEMAについて

パーマリンク 2008/08/21 19:14:53 著者: cakephp メール
カテゴリ: モデル, データベース, PostgreSQL

CakePHP1.2 RC2

開発中に debug の設定を 2 などにしておくとページを表示させる為に利用している SQL を出力してくれて大変便利です。
PostgreSQL を利用している場合、その SQL の一番上に表示される

SELECT table_name as name FROM INFORMATION_SCHEMA.tables WHERE table_schema = 'public';

などのスキーマに関する SQL の処理時間が結構かかります。

本番に導入した際にこんなに時間を取られては困るという場合は、debug を 0 にすれば解決します。
(本番環境では debug を 0 にするのは当然ですね)


この仕組みについてです。

スキーマ情報は app/tmp/cache/models/ 配下にキャッシュされるのですが、cake/libs/model/datasources/datasource.php を見てみると、

function __cacheDescription($object, $data = null) {
	if ($this->cacheSources === false) {
		return null;
	}
	if (Configure::read() > 0) {
		$expires = "+15 seconds";
	} else {
		$expires = "+999 days";
	}
	if ($data !== null) {
		$this->__descriptions[$object] =& $data;
	}

	$key = ConnectionManager::getSourceName($this) . '_' . $object;
	$cache = Cache::read($key, '_cake_model_');

	if (empty($cache)) {
		$cache = $data;
		Cache::write($key, $cache, array('duration' => $expires, 'config' => '_cake_model_'));
	}

	return $cache;
}

デバック情報が 0 でない場合は、キャッシュの有効期間が15秒とあります。
これの影響で、ページを表示する度にスキーマの SQL が呼ばれていたという訳です。

一方、デバック情報を 0 とした場合、有効期間が999日になっているので、毎回スキーマの SQL が呼ばれなくなります。

これで安心して本番導入できます。

#本番環境ではスキーマ情報が保持され続けるので、テーブルの構造を途中で変えたような時は、このキャッシュを削除しないと反映されないので注意しましょう。

Validationのbetweenの注意点

パーマリンク 2008/08/11 12:01:09 著者: cakephp メール
カテゴリ: モデル

CakePHP1.2 RC2

バリデーションの rule の一つである between を使うときの注意点。

使い方

'sample' => array(
    array(
        'rule' => array('between', 10, 20),
    ),
),


このように Model に書くのですが、なんとなく sample が最小値(10)と最大値(20)の間の値かどうかをチェックしてくれそうですが、実際はバイト数が最小値と最大値の間に入っているかのチェックが行われます。

cake/libs/validation.php

function between($check, $min, $max) {
    $length = strlen($check);

    if ($length >= $min && $length <= $max) {
        return true;
    } else {
        return false;
    }
}

<< 1 2 3 4 5 >>

2017年10月
 << <   > >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

CakePHPに関する情報をまとめていきます。

開発スピードがアップできればうれしいです。

>>連絡はこちらへどうぞ



CakePHP最新版
CakePHP 1.2.3.8166


CakePHPの書籍

CakePHPによる実践Webアプリケーション開発

CakePHP1.2で作成する人にオススメ。
とても参考になります。

まるごとPHP!(vol.2)

安藤さんの解説が載っています。
AmazonのPagination部分は参考になります。

CakePHPによるWebアプリケーション開発

まだ読んだことありません

CakePHPポケットリファレンス
CakePHPポケットリファレンス
CakePHP1.2 でやるなら、これがあると何かと便利♪

CakePHP徹底入門
CakePHP徹底入門
CakePHP1.2 を今から始めるならここから

Fast CakePHP
Fast CakePHP
シンプルでわかりやすい CakePHP の入門書

CakePHPガイドブック
CakePHPガイドブック
CakePHP1.1 ではとても参考にした CakePHP 最初の入門書

検索

XMLフィード

16ブログ     powered by b2evolution