SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Yii Framework
Best Practices & Hints
CActiveRecord & CDbCriteria
Simple Search:
$model = new User();
$model->getDbCriteria()->compare('id', $user_id);
$model->getDbCriteria()->compare('name', $user_name);
$models = $model->findAll();
$model = new User();
$criteria=new CDbCriteria;
$criteria->compare('id', $user_id);
$criteria->compare('name', $user_name);
$models = $model->findAll($criteria);
CActiveRecord & CDbCriteria
Operator Search:
$model = new User();
$model ->getDbCriteria()->addCondition("birthDate <= :eighteenPlus");
$model ->getDbCriteria()->params[':eighteenPlus]=$eighteenPlus;
$model ->getDbCriteria()->compare("birthDate",$eighteenPlus,false,"<=");
Possible Operators: <> <= >= < > =

Like Search:
$model = new User();
$model ->getDbCriteria()->compare("name", $initials, true);
CActiveRecord & CDbCriteria
Nested Conditions Search:
$model = new User();
$model->getDbCriteria()->compare('id', $user_id);
$model->getDbCriteria()->compare('name', $user_name);
$criteria = new CDbCriteria();
$criteria->compare('del_flag', false, false, 'OR');
$criteria->compare('del_flag', null, false, 'OR');
$model->getDbCriteria()->mergeWith($criteria);
$models = $model->findAll();
CActiveRecord & CDbCriteria
Relational Search:
$model = new User();
$model ->with('UserAddress');
$model ->with('UserContact');
$model ->getDbCriteria()->together = false;
$model->getDbCriteria()->compare('id', $userId);
$model->getDbCriteria()->compare('name', $userName);
$model->getDbCriteria()->compare('UserContact.phoneNumber', $phoneNumber);
/protected/models/User.php
public function relations() {
return array(
'productsClass' => array(self::HAS_MANY, 'UserAddress', 'user_id'),
'productCategory' => array(self::HAS_MANY, 'phoneNumber', 'user_id),
);
}
CActiveRecord & CDbCriteria
Populate:
$model->attributes = $_POST['NpSettingsForm'];
<?php
$form=$this->beginWidget('CActiveForm', array(
'id'=>'npPostPaySettings',
'htmlOptions'=>array(
'class'=>'form-horizontal text-right',
),
'enableAjaxValidation'=>false,
'enableClientValidation' => true,
));
?>
<?php echo $form->labelEx($model,'spCode'); ?>
<?php echo $form->TextField($model,'spCode'); ?>
<?php echo $form->labelEx($model,'terminalId); ?>
<?php echo $form->TextField($model,'terminalId'); ?>
Modules
Folder Structure:
forum/
ForumModule.php
components/
views/
controllers/
DefaultController.php
extensions/
models/
views/
layouts/
default/
index.php

the module class file
containing reusable user components
containing view files for widgets
containing controller class files
the default controller class file
containing third-party extensions
containing model class files
containing controller view and layout files
containing layout view files
containing view files for DefaultController
the index view file
Modules
Initial Settings:
/protected/config/main.php
$modules = array(
'forum',
);

Module Class:
/protected/modules/forum/ForumModule.php
class NpPostPayModule extends CWebModule
{
const MODULE_ID = 401;
const MODULE_CODE = 'mdl_np';
const MODULE_NAME = 'NP後払いモジュール';

Mais conteúdo relacionado

Destaque

ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425エンジニア勉強会 エスキュービズム
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたエンジニア勉強会 エスキュービズム
 
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711エンジニア勉強会 エスキュービズム
 

Destaque (20)

ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
 
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
 
Visual studio2015と
Visual studio2015とVisual studio2015と
Visual studio2015と
 
de:code 2015
de:code 2015de:code 2015
de:code 2015
 
【エンジニア勉強会】MicrosoftAzure.
【エンジニア勉強会】MicrosoftAzure.【エンジニア勉強会】MicrosoftAzure.
【エンジニア勉強会】MicrosoftAzure.
 
エンジニア勉強会_DECIDE
エンジニア勉強会_DECIDEエンジニア勉強会_DECIDE
エンジニア勉強会_DECIDE
 
メモリ管理の話_エスキュービズム勉強会20140926
メモリ管理の話_エスキュービズム勉強会20140926メモリ管理の話_エスキュービズム勉強会20140926
メモリ管理の話_エスキュービズム勉強会20140926
 
Sensu graphite_エンジニア勉強会20140205
Sensu graphite_エンジニア勉強会20140205Sensu graphite_エンジニア勉強会20140205
Sensu graphite_エンジニア勉強会20140205
 
暗号理論_エンジニア勉強会20140509
暗号理論_エンジニア勉強会20140509暗号理論_エンジニア勉強会20140509
暗号理論_エンジニア勉強会20140509
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
 
Kinect
KinectKinect
Kinect
 
IoTで何をやったか
IoTで何をやったかIoTで何をやったか
IoTで何をやったか
 
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
 
ほんのりTDD
ほんのりTDDほんのりTDD
ほんのりTDD
 
Winストアアプリでble接続
Winストアアプリでble接続Winストアアプリでble接続
Winストアアプリでble接続
 
Rubyのクラスとメソッド_エスキュービズム勉強会0530
Rubyのクラスとメソッド_エスキュービズム勉強会0530Rubyのクラスとメソッド_エスキュービズム勉強会0530
Rubyのクラスとメソッド_エスキュービズム勉強会0530
 
AzureのIaaSとかの話
AzureのIaaSとかの話AzureのIaaSとかの話
AzureのIaaSとかの話
 
レイアウトについて
レイアウトについてレイアウトについて
レイアウトについて
 
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
 
Dockerを社内で使うために
Dockerを社内で使うためにDockerを社内で使うために
Dockerを社内で使うために
 

Mais de エンジニア勉強会 エスキュービズム

Mais de エンジニア勉強会 エスキュービズム (19)

エスキュービズム新技術発表資料
エスキュービズム新技術発表資料エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
 
小売りにおけるAIの可能性
小売りにおけるAIの可能性小売りにおけるAIの可能性
小売りにおけるAIの可能性
 
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリングReact Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
 
はじめての品質
はじめての品質はじめての品質
はじめての品質
 
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
 
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
 
VRのコンテンツ
VRのコンテンツVRのコンテンツ
VRのコンテンツ
 
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについてAzureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
 
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
 
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
 
IoTのIを考えてみる話
IoTのIを考えてみる話IoTのIを考えてみる話
IoTのIを考えてみる話
 
Riot.jsに触れてみた話
Riot.jsに触れてみた話Riot.jsに触れてみた話
Riot.jsに触れてみた話
 
Go言語オーバービュー201507
Go言語オーバービュー201507Go言語オーバービュー201507
Go言語オーバービュー201507
 
理想のWEB開発
理想のWEB開発理想のWEB開発
理想のWEB開発
 
マイコンとIoT
マイコンとIoTマイコンとIoT
マイコンとIoT
 
質問応答システム
質問応答システム質問応答システム
質問応答システム
 
エンジニア勉強会20140424
エンジニア勉強会20140424エンジニア勉強会20140424
エンジニア勉強会20140424
 

Yii framework_エンジニア勉強会20140226

  • 2. CActiveRecord & CDbCriteria Simple Search: $model = new User(); $model->getDbCriteria()->compare('id', $user_id); $model->getDbCriteria()->compare('name', $user_name); $models = $model->findAll(); $model = new User(); $criteria=new CDbCriteria; $criteria->compare('id', $user_id); $criteria->compare('name', $user_name); $models = $model->findAll($criteria);
  • 3. CActiveRecord & CDbCriteria Operator Search: $model = new User(); $model ->getDbCriteria()->addCondition("birthDate <= :eighteenPlus"); $model ->getDbCriteria()->params[':eighteenPlus]=$eighteenPlus; $model ->getDbCriteria()->compare("birthDate",$eighteenPlus,false,"<="); Possible Operators: <> <= >= < > = Like Search: $model = new User(); $model ->getDbCriteria()->compare("name", $initials, true);
  • 4. CActiveRecord & CDbCriteria Nested Conditions Search: $model = new User(); $model->getDbCriteria()->compare('id', $user_id); $model->getDbCriteria()->compare('name', $user_name); $criteria = new CDbCriteria(); $criteria->compare('del_flag', false, false, 'OR'); $criteria->compare('del_flag', null, false, 'OR'); $model->getDbCriteria()->mergeWith($criteria); $models = $model->findAll();
  • 5. CActiveRecord & CDbCriteria Relational Search: $model = new User(); $model ->with('UserAddress'); $model ->with('UserContact'); $model ->getDbCriteria()->together = false; $model->getDbCriteria()->compare('id', $userId); $model->getDbCriteria()->compare('name', $userName); $model->getDbCriteria()->compare('UserContact.phoneNumber', $phoneNumber); /protected/models/User.php public function relations() { return array( 'productsClass' => array(self::HAS_MANY, 'UserAddress', 'user_id'), 'productCategory' => array(self::HAS_MANY, 'phoneNumber', 'user_id), ); }
  • 6. CActiveRecord & CDbCriteria Populate: $model->attributes = $_POST['NpSettingsForm']; <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'npPostPaySettings', 'htmlOptions'=>array( 'class'=>'form-horizontal text-right', ), 'enableAjaxValidation'=>false, 'enableClientValidation' => true, )); ?> <?php echo $form->labelEx($model,'spCode'); ?> <?php echo $form->TextField($model,'spCode'); ?> <?php echo $form->labelEx($model,'terminalId); ?> <?php echo $form->TextField($model,'terminalId'); ?>
  • 7. Modules Folder Structure: forum/ ForumModule.php components/ views/ controllers/ DefaultController.php extensions/ models/ views/ layouts/ default/ index.php the module class file containing reusable user components containing view files for widgets containing controller class files the default controller class file containing third-party extensions containing model class files containing controller view and layout files containing layout view files containing view files for DefaultController the index view file
  • 8. Modules Initial Settings: /protected/config/main.php $modules = array( 'forum', ); Module Class: /protected/modules/forum/ForumModule.php class NpPostPayModule extends CWebModule { const MODULE_ID = 401; const MODULE_CODE = 'mdl_np'; const MODULE_NAME = 'NP後払いモジュール';