Datasource

      id:kaz_29(kaz29)
2010/1/30   49 PHP       @
•
•( )         (E2)
  •
  •
  •      CMS
• id:kaz_29(kaz29)
• PHP     4
• baker
CakePHP
Datasource
Datasource
Datasource
Datasouce
Datasource

•


•                   MySQL, PostgresSQL




http://book.cakephp.org/ja/view/87/DataSources
Datasource

• app/config/database.php Database
                          Datasource




 http://book.cakephp.org/ja/view/87/DataSources
dbo_source

• RDB
           Datasourse



• mysql,pgsql,sqlite,ms
  sql,oracle etc...


                          ~/cake/libs/models/datasources
Datasource

• CSV Datasource
  http://bakery.cakephp.org/articles/view/csv-datasource-for-
  reading-your-csv-files


• Twitter Datasource
  http://bakery.cakephp.org/articles/view/twitter-datasource


• CouchDB datasource for CakePHP
  http://github.com/jperras/divan/blob/master


• mongoDB datasource for cakephp
  http://github.com/ichikaway/mongoDB-Datasource

                                                                ...
Datasource
<?php
class DATABASE_CONFIG {	    datasource
   var $csv = array(
   	 'datasource' => 'csv',
      'path' => '.csv',
      'extension' => 'csv',
      'readonly' => true,
      'recursive' => false,
   );
}
APP/config/database.php database
Datasource

//
                               database
<?php
class User extends Model
{
  var $useDbConfig = 'csv' ;
}


                    database
Datasource

class FooController extends AppController
{
  var $uses = array('User');
  function index()
  {	
     $users = $this->User->find('all') ;
     .....
  }
}
atomfeed Datasouce
• app/models/datasources

•              hoge_source.php

•          HogeSource

• DataSource
Method
Method

• listSources -

• describe -

• calculate - COUNT(*)
listSource


function listSources()
{
 return array('bookmarks') ;
}
describe
	 function describe(&$model)
  {
    return array(
     'tag' => array(
       'type' => 'string',
       'null' => true,
       'default' => null,
       'length' => 512,
     ),
    );
  }
caluculate

	 function calculate(
     &$model, $func, $params = array())
	{
  return array('count' => true);
 }
method

• create -

• update -

• read -

• delete -
• create(&$model, $fields = array(),
    $values = array())
  • update(&$model, $fields = array(),
    $values = array())



$model->id   $model->alias
• delete($model, $id = null)
• read(&$model, $queryData = array())
   $queryData
    Array
    (
      [conditions] => Array
         (
           [feed] => http://b.hatena.ne.jp/hoge/atomfeed
         )
      [fields] => Array([count] => 1)
      [joins] => Array()
      [limit] =>
      [offset] =>
      [order] => Array([0] => )
      [page] => 1
      [group] =>
      [callbacks] => 1
    )
read
function read(&$model, $query)
{
  if ($model->findQueryType === 'count') {
    // ....
  $result = array(array(array(‘count’=>$count)));
 } else {
  // ....
    $result = array(array($model->alias =>[   ])));
 }
 return $result ;
}
• 1.2    Datasource Plugin

• 1.3 beta   Plugin
Datasouce



Datasouce               (^^
><
question?

第49回Php勉強会@関東 Datasource

Editor's Notes

  • #3 &amp;#x6700;&amp;#x8FD1;&amp;#x306F;&amp;#x3001;&amp;#x307B;&amp;#x307C;&amp;#x4E8C;&amp;#x5E74;&amp;#x3076;&amp;#x308A;&amp;#x4F4D;&amp;#x3067;PC&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x3092;&amp;#x4F5C;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x3002;
  • #4 &amp;#x5927;&amp;#x4F53;&amp;#x306E;&amp;#x4EBA;&amp;#x6570;&amp;#x3092;&amp;#x30E1;&amp;#x30E2;&amp;#x308B;
  • #9 Model&amp;#x306F;DB&amp;#x3068;&amp;#x3084;&amp;#x308A;&amp;#x3068;&amp;#x308A;&amp;#x3092;&amp;#x3059;&amp;#x308B;&amp;#x3082;&amp;#x306E;&amp;#x3067;&amp;#x306F;&amp;#x306A;&amp;#x3044;&amp;#x3002;
  • #11 &amp;#x6A19;&amp;#x6E96;&amp;#x3067;&amp;#x7528;&amp;#x610F;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;datasource &amp;#x901A;&amp;#x5E38;&amp;#x306F;&amp;#x3053;&amp;#x3053;&amp;#x306B;&amp;#x3067;&amp;#x3066;&amp;#x3044;&amp;#x308B;RDB&amp;#x30A2;&amp;#x30AF;&amp;#x30BB;&amp;#x30B9;&amp;#x7528;&amp;#x306E;Datasource&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x3066;&amp;#x308B;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002; dbo_source&amp;#x306F;RDB&amp;#x306B;&amp;#x5171;&amp;#x901A;&amp;#x3059;&amp;#x308B;&amp;#x51E6;&amp;#x7406;&amp;#x3092;&amp;#x307E;&amp;#x3068;&amp;#x3081;&amp;#x305F;datasource&amp;#x306E;&amp;#x89AA; driver &amp;#x3067;&amp;#x6307;&amp;#x5B9A;&amp;#x3057;&amp;#x305F;dbo_source&amp;#x304C;&amp;#x52D5;&amp;#x4F5C;&amp;#x3059;&amp;#x308B;
  • #12 &amp;#x3058;&amp;#x3083;&amp;#x3041;&amp;#x5B9F;&amp;#x969B;&amp;#x3069;&amp;#x3093;&amp;#x306A;Datasource&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x306E;&amp;#x304B;&amp;#x3002;&amp;#x3002;&amp;#x3002; CSV &amp;#x4E00;&amp;#x884C;&amp;#x76EE;&amp;#x3092;&amp;#x8AAD;&amp;#x3093;&amp;#x3067;&amp;#x30D5;&amp;#x30A3;&amp;#x30FC;&amp;#x30EB;&amp;#x30C9;&amp;#x5B9A;&amp;#x7FA9;&amp;#x3092;&amp;#x4F5C;&amp;#x3063;&amp;#x305F;&amp;#x308A;&amp;#x8272;&amp;#x3005;&amp;#x3057;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x3002; CouchDB &amp;#x53BB;&amp;#x5E74;&amp;#x306E;CakeMatsuri&amp;#x306B;&amp;#x3082;&amp;#x6765;&amp;#x3066;&amp;#x3082;&amp;#x3089;&amp;#x3063;&amp;#x305F;joel&amp;#x4F5C; mongoDB &amp;#x3053;&amp;#x306E;&amp;#x5F8C;&amp;#x767A;&amp;#x8868;&amp;#x3059;&amp;#x308B;&amp;#x5E02;&amp;#x5DDD;&amp;#x3055;&amp;#x3093;&amp;#x4F5C;
  • #16 &amp;#x4ECA;&amp;#x56DE;&amp;#x306F;&amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x6642;&amp;#x9593;&amp;#x304C;&amp;#x306A;&amp;#x304B;&amp;#x3063;&amp;#x305F;&amp;#x306E;&amp;#x3067;(^^;&amp;#x53C2;&amp;#x7167;&amp;#x7CFB;&amp;#x306E;&amp;#x307F;&amp;#x4F5C;&amp;#x3063;&amp;#x3066;&amp;#x307F;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x3002; CakePHP&amp;#x3060;&amp;#x3068;&amp;#x7D50;&amp;#x69CB;&amp;#x7C21;&amp;#x5358; &amp;#x30DA;&amp;#x30FC;&amp;#x30B8;&amp;#x30F3;&amp;#x30B0;&amp;#x306F; ?of=21 &amp;#x3060;&amp;#x3051; &amp;#x30DA;&amp;#x30FC;&amp;#x30B8;&amp;#x30EA;&amp;#x30F3;&amp;#x30AF;&amp;#x306E;&amp;#x8868;&amp;#x793A;&amp;#x306F;&amp;#x3002;&amp;#x3002;&amp;#x3002; &amp;#x4EE5;&amp;#x5916;&amp;#x306B;&amp;#x9762;&amp;#x5012; Datasource&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x305F;&amp;#x4F8B;-1 &amp;#x3088;&amp;#x304F;&amp;#x898B;&amp;#x308B;&amp;#x611F;&amp;#x3058;&amp;#x3067;&amp;#x3059;&amp;#x306D; Datasource&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x305F;&amp;#x4F8B;-2 &amp;#x30DA;&amp;#x30FC;&amp;#x30B8;&amp;#x5207;&amp;#x308A;&amp;#x66FF;&amp;#x3048;&amp;#x3092;&amp;#x3064;&amp;#x3051;&amp;#x3066;&amp;#x307F;&amp;#x305F;&amp;#x3001;tag&amp;#x3067;&amp;#x691C;&amp;#x7D22;&amp;#x3068;&amp;#x304B;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3057;&amp;#x3066;&amp;#x307F;&amp;#x305F;&amp;#x3002; Datasource&amp;#x3067;&amp;#x5B9F;&amp;#x88C5;&amp;#x3059;&amp;#x308B;&amp;#x3068; &amp;#x3044;&amp;#x3064;&amp;#x3082;&amp;#x306E; db &amp;#x304C;Datasource &amp;#x306A; Model &amp;#x3068; &amp;#x540C;&amp;#x3058;&amp;#x3088;&amp;#x3046;&amp;#x306B; paginator &amp;#x304C;&amp;#x4F7F;&amp;#x3048;&amp;#x307E;&amp;#x3059;&amp;#xFF01;
  • #20 calculate&amp;#x306F;&amp;#x30DE;&amp;#x30CB;&amp;#x30E5;&amp;#x30A2;&amp;#x30EB;&amp;#x306E;&amp;#x300C;&amp;#x5B9F;&amp;#x88C5;&amp;#x3057;&amp;#x306A;&amp;#x3051;&amp;#x308C;&amp;#x3070;&amp;#x306A;&amp;#x3089;&amp;#x306A;&amp;#x3044;&amp;#x30E1;&amp;#x30BD;&amp;#x30C3;&amp;#x30C9;&amp;#x300D; &amp;#x306B;&amp;#x306F;&amp;#x8F09;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x304C;&amp;#x5FC5;&amp;#x8981;&amp;#x3067;&amp;#x3059; &amp;#x7C21;&amp;#x5358;&amp;#x306A;read,write&amp;#x306A;&amp;#x3089;&amp;#x5FC5;&amp;#x8981;&amp;#x306A;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001; &amp;#x3053;&amp;#x308C;&amp;#x304C;&amp;#x306A;&amp;#x3044;&amp;#x3068;paginate&amp;#x3067;&amp;#x304D;&amp;#x306A;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x3002; &amp;#x3000;&amp;#x3000;&amp;#x3088;&amp;#x306D;&amp;#xFF1F;&amp;#x5E02;&amp;#x5DDD;&amp;#x3055;&amp;#x3093;&amp;#xFF1F;
  • #21 &amp;#x30C6;&amp;#x30FC;&amp;#x30D6;&amp;#x30EB;&amp;#x3092;&amp;#x5217;&amp;#x6319;
  • #22 &amp;#x30D5;&amp;#x30A3;&amp;#x30FC;&amp;#x30EB;&amp;#x30C9;&amp;#x306E;&amp;#x4E00;&amp;#x89A7;&amp;#x3068;&amp;#x578B;&amp;#x306A;&amp;#x3069;&amp;#x306E;&amp;#x30B9;&amp;#x30AD;&amp;#x30FC;&amp;#x30DE;&amp;#x60C5;&amp;#x5831;&amp;#x3092;&amp;#x8FD4;&amp;#x3059;&amp;#x3002; dbo&amp;#x3067;&amp;#x306F;DB&amp;#x306B;DESCRIBE&amp;#x3057;&amp;#x3066;&amp;#x53D6;&amp;#x5F97;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x3002; &amp;#x3000;queryLog&amp;#x306B;&amp;#x51FA;&amp;#x3066;&amp;#x304F;&amp;#x308B;DESCRIBE&amp;#x306F;dbo&amp;#x306E;&amp;#x3053;&amp;#x306E;&amp;#x90E8;&amp;#x5206;&amp;#x304C;&amp;#x52D5;&amp;#x3044;&amp;#x3066;&amp;#x3044;&amp;#x308B; &amp;#x3053;&amp;#x3053;&amp;#x306B;&amp;#x5B9A;&amp;#x7FA9;&amp;#x304C;&amp;#x7121;&amp;#x3044;&amp;#x3068;&amp;#x3001;&amp;#x4F5C;&amp;#x6210;&amp;#x3001;&amp;#x66F4;&amp;#x65B0;&amp;#x51E6;&amp;#x7406;&amp;#x306B;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x304C;&amp;#x6E21;&amp;#x3063;&amp;#x3066;&amp;#x3053;&amp;#x306A;&amp;#x3044;&amp;#x3002; default&amp;#x5024;&amp;#x3092;&amp;#x5B9A;&amp;#x7FA9;&amp;#x3059;&amp;#x308B;&amp;#x3068;save&amp;#x6642;&amp;#x306B;&amp;#x6307;&amp;#x5B9A;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x306A;&amp;#x3044;&amp;#x30D5;&amp;#x30A3;&amp;#x30FC;&amp;#x30EB;&amp;#x30C9;&amp;#x3082;&amp;#x81EA;&amp;#x52D5;&amp;#x3067;&amp;#x4F5C;&amp;#x3089;&amp;#x308C;&amp;#x308B;&amp;#x3002; created,modified&amp;#x306F;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x304C;&amp;#x306A;&amp;#x3051;&amp;#x308C;&amp;#x3070;&amp;#x73FE;&amp;#x5728;&amp;#x6642;&amp;#x523B;&amp;#x304C;&amp;#x6307;&amp;#x5B9A;&amp;#x3055;&amp;#x308C;&amp;#x308B;&amp;#x3002;
  • #23 count(*),min,max&amp;#x306A;&amp;#x3069;&amp;#x7279;&amp;#x6B8A;&amp;#x306A;query&amp;#x3092;&amp;#x5B9A;&amp;#x7FA9; &amp;#x901A;&amp;#x5E38;&amp;#x3053;&amp;#x308C;&amp;#x3060;&amp;#x3051;&amp;#x3067;&amp;#x3044;&amp;#x3051;&amp;#x308B;&amp;#x30CF;&amp;#x30BA;
  • #24 &amp;#x3053;&amp;#x306E;&amp;#x3046;&amp;#x3061;&amp;#x6700;&amp;#x4F4E;&amp;#x4E00;&amp;#x3064;&amp;#x304C;&amp;#x5FC5;&amp;#x8981;
  • #25 &amp;#x30E2;&amp;#x30C7;&amp;#x30EB;&amp;#x306E;&amp;#x30A4;&amp;#x30F3;&amp;#x30B9;&amp;#x30BF;&amp;#x30F3;&amp;#x30B9;&amp;#x3068;&amp;#x3001;&amp;#x30D5;&amp;#x30A3;&amp;#x30FC;&amp;#x30EB;&amp;#x30C9;&amp;#x540D;&amp;#x3001;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x306E;&amp;#x914D;&amp;#x5217;&amp;#x304C;&amp;#x308F;&amp;#x305F;&amp;#x3063;&amp;#x3066;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002; $model-&gt;id &amp;#x3068;&amp;#x304B; $model-&gt;alias &amp;#x3068;&amp;#x304B;&amp;#x3092;&amp;#x4F7F;&amp;#x3044;&amp;#x3064;&amp;#x3064;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x3092;&amp;#x66F4;&amp;#x65B0;&amp;#x3059;&amp;#x308B;&amp;#x611F;&amp;#x3058;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • #26 &amp;#x30D7;&amp;#x30E9;&amp;#x30A4;&amp;#x30DE;&amp;#x30EA;&amp;#x30FC;&amp;#x30AD;&amp;#x30FC;&amp;#x3092;&amp;#x53D7;&amp;#x3051;&amp;#x53D6;&amp;#x308C;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x305D;&amp;#x308C;&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x3066;&amp;#x524A;&amp;#x9664;
  • #27 &amp;#x304A;&amp;#x305D;&amp;#x3089;&amp;#x304F;read&amp;#x304C;&amp;#x4E00;&amp;#x756A;&amp;#x8907;&amp;#x96D1;&amp;#x306B;&amp;#x306A;&amp;#x308B;&amp;#x3057;&amp;#x3001;&amp;#x5B9F;&amp;#x88C5;&amp;#x3057;&amp;#x3088;&amp;#x3046;&amp;#x3068;&amp;#x3059;&amp;#x308B;&amp;#x3068;&amp;#x7D50;&amp;#x69CB;&amp;#x306F;&amp;#x307E;&amp;#x308B;&amp;#x304B;&amp;#x3082; queryData&amp;#x306B;&amp;#x3053;&amp;#x3093;&amp;#x306A;&amp;#x611F;&amp;#x3058;&amp;#x306E;hash&amp;#x304C;&amp;#x5165;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x308B; &amp;#x3053;&amp;#x308C;&amp;#x3092;&amp;#x5143;&amp;#x306B;&amp;#x30C7;&amp;#x30FC;&amp;#x30BF;&amp;#x3092;&amp;#x53D6;&amp;#x3063;&amp;#x3066;&amp;#x304F;&amp;#x308B; &amp;#x3053;&amp;#x308C;&amp;#x306F;feed&amp;#x306B;&amp;#x5927;&amp;#x3057;&amp;#x3066; COUNT(*)&amp;#x3059;&amp;#x308B;&amp;#x3068;&amp;#x304D;&amp;#x306E;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x3067;&amp;#x3059;&amp;#x3002;
  • #28 $model-&gt;findQueryType &amp;#x306B; find&amp;#x306E;&amp;#x7B2C;&amp;#x4E00;&amp;#x5F15;&amp;#x6570;&amp;#x3067;&amp;#x6307;&amp;#x5B9A;&amp;#x3057;&amp;#x305F;&amp;#x691C;&amp;#x7D22;&amp;#x65B9;&amp;#x6CD5;&amp;#x304C;&amp;#x5165;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x308B; count&amp;#x304C;&amp;#x3061;&amp;#x3083;&amp;#x3093;&amp;#x3068;&amp;#x52D5;&amp;#x304B;&amp;#x306A;&amp;#x3044;&amp;#x3068;paginete&amp;#x3067;&amp;#x304D;&amp;#x306A;&amp;#x3044;&amp;#x3002; Model&amp;#x3067;save(&amp;#x66F4;&amp;#x65B0;),delete&amp;#x6642;&amp;#x306B;&amp;#x306F;&amp;#x30EC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x306E;&amp;#x5B58;&amp;#x5728;&amp;#x3092;&amp;#x30C1;&amp;#x30A7;&amp;#x30C3;&amp;#x30AF;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x3053;&amp;#x308C;&amp;#x304C;&amp;#x901A;&amp;#x3089;&amp;#x306A;&amp;#x3044;&amp;#x3068;&amp;#x4F55;&amp;#x3082;&amp;#x52D5;&amp;#x304B;&amp;#x306A;&amp;#x3044; &amp;#x958B;&amp;#x767A;&amp;#x306E;&amp;#x6700;&amp;#x521D;&amp;#x306E;&amp;#x6642;&amp;#x306F;&amp;#x304B;&amp;#x306A;&amp;#x3089;&amp;#x305A; 1&amp;#x4EF6;&amp;#x3068;&amp;#x8FD4;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3057;&amp;#x3066;&amp;#x305F;...(^^; all,first&amp;#x3069;&amp;#x3061;&amp;#x3089;&amp;#x3082; model&amp;#x3067;all&amp;#x3057;&amp;#x305F;&amp;#x6642;&amp;#x3068;&amp;#x540C;&amp;#x3058;&amp;#x5F62;&amp;#x5F0F;&amp;#x3092;&amp;#x8FD4;&amp;#x3059;&amp;#x3002;model&amp;#x5185;&amp;#x3067;first&amp;#x306E;&amp;#x6642;&amp;#x306F;[0]&amp;#x3092;&amp;#x8FD4;&amp;#x3057;&amp;#x3066;&amp;#x308B;&amp;#x3002;