トップ  > メモ一覧  > カテゴリ「モデル(プロペル)」の絞り込み結果 : 7件

7件中 1 〜 7 表示  1 

No.892 任意のSQLを直接発行(ぷろぺる)

任意のSQLを直接発行 Edit

symfonyでは結合系の検索の仕組みが貧弱なので、すぐに直接SQLを発行したくなるね。symfony1.2は内臓している標準のO/RマッパーはPropel1.3なので1.1のころとすこし違ったので、まぁやってみた。

$con = Propel::getConnection();
$stmt = $con->prepare("SELECT * FROM hogetbl WHERE hogename = ?");
$stmt->bindValue(1, "ほげ〜");
$stmt->execute();
while($row = $stmt->fetch()) { 
   print "Name: " . $row['hogename'] . "\n";
}

getConnectionにはテーブル名を渡しているサンプルも見つかったが、特に必要ないっぽい。発行するSQLにPeerの定数から直接結合してもいいかもね。

引用元

更新:2009/05/16 15:41 カテゴリ: symfony  > モデル(プロペル) ▲トップ

No.842 JOINの文

  7     $criteria = new Criteria();
  8     $criteria->addJoin(self::ID, JobeetJobPeer::CATEGORY_ID);
  9     $criteria->add(JobeetJobPeer::EXPIRES_AT, time(), Criteria::GREATER_THAN);
 10     $criteria->setDistinct();
※3番目の引数を追加することでjoin演算子を変更することもできます (Criteria::LEFT_JOINCriteria::RIGHT_JOIN、とCriteria::INNER_JOIN)

更新:2009/05/16 15:39 カテゴリ: symfony  > モデル(プロペル) ▲トップ

No.839 Criteria::add()

  • Criteria::EQUAL
  • Criteria::NOT_EQUAL
  • Criteria::GREATER_THAN, Criteria::GREATER_EQUAL
  • Criteria::LESS_THAN, Criteria::LESS_EQUAL
  • Criteria::LIKE, Criteria::NOT_LIKE
  • Criteria::CUSTOM
  • Criteria::IN, Criteria::NOT_IN
  • Criteria::ISNULL, Criteria::ISNOTNULL
  • Criteria::CURRENT_DATE, Criteria::CURRENT_TIME, Criteria::CURRENT_TIMESTAMP
更新:2009/05/16 15:38 カテゴリ: symfony  > モデル(プロペル) ▲トップ

No.838【引用】SQL(Criteria)

データベース・SQL(Criteria)

プログラマーの開発メモ

2008.05.20 -  SELECT句に別名(AS)を使う - 記述日2008/5/8 - 長谷部 
2008.05.20 -  JOIN条件に複数カラムを指定する - 記述日2008/4/23 - 長谷部 
2008.05.20 -  Criteria::CUSTOMの使い方 - 記述日2008/4/8 - 長谷部 
2008.05.20 -  トランザクションの使い方 - 記述日2008/3/18 - 綿引 
2008.05.20 -  全角カナorder by 「ヴ」を「ウ」と「エ...

引用元

更新:2009/05/16 15:38 カテゴリ: symfony  > モデル(プロペル) ▲トップ

No.837【引用】Criteriaを使用したSelectクエリの作成

1. プライマリ キーから
<?php
$ user = UserPeer :: retrieveByPk ( 1 ) ;

2.単純な クエリ
<?php
$ c = new Criteria () ;
$ c -> add ( UserPeer :: ACCOUNT, ' hoge ' ) ;

$ user = UserPeer :: doSelectOne ( $ c ) ;

echo $ user -> getName () ;

3.JOINを使った クエリ
<?php
$ c = new Criteria () ;
$ c -> addJoin ( DataPeer :: USER_ID, UserPeer :: ID ) ;
$ c -> add ( UserPeer :: ID, 1 ) ...

引用元

更新:2009/05/16 15:38 カテゴリ: symfony  > モデル(プロペル) ▲トップ

No.893 SELECT文(プロペル)

◆主キーでレコードを取り出す
$article = ArticlePeer::retrieveByPk(7);

◆カラム名を指定してその値を指定して取り出す
$tag = TagPeer::retrieveByName($request->getParameter('tag'));

◆シンプルSELECT
$c = new Criteria();
$articles = ArticlePeer::doSelect($c);
◆wher・order
$c = new Criteria();
$c->add(CommentPeer::AUTHOR, 'Steve');
$c->addAscendingOrderByColumn(CommentPeer::CREATED_AT);
$comments = CommentPeer::doSelect($c);
// 上記のコードは下記のようなSQLクエリになる
SELECT blog_comment.ARTICLE_ID, blog_comment.AUTHOR, blog_comment.CONTENT,
blog_comment.CREATED_AT
FROM blog_comment
WHERE blog_comment.author = 'Steve'
ORDER BY blog_comment.CREATED_AT ASC;

Table 8-1 - SQL and Criteria Object Syntax

SQL Criteria
WHERE column = value ->add(column, value);
WHERE column <> value ->add(column, value, Criteria::NOT_EQUAL);
Other Comparison Operators  
> , < Criteria::GREATER_THAN, Criteria::LESS_THAN
>=, <= Criteria::GREATER_EQUAL, Criteria::LESS_EQUAL
IS NULL, IS NOT NULL Criteria::ISNULL, Criteria::ISNOTNULL
LIKE, ILIKE Criteria::LIKE, Criteria::ILIKE
IN, NOT IN Criteria::IN, Criteria::NOT_IN
Other SQL Keywords  
ORDER BY column ASC ->addAscendingOrderByColumn(column);
ORDER BY column DESC ->addDescendingOrderByColumn(column);
LIMIT limit ->setLimit(limit)
OFFSET offset ->setOffset(offset)
FROM table1, table2 WHERE table1.col1 = table2.col2 ->addJoin(col1, col2)
FROM table1 LEFT JOIN table2 ON table1.col1 = table2.col2 ->addJoin(col1, col2, Criteria::LEFT_JOIN)
FROM table1 RIGHT JOIN table2 ON table1.col1 = table2.col2 ->addJoin(col1, col2, Criteria::RIGHT_JOIN)
◆複雑な例
$c = new Criteria();
$c->add(CommentPeer::AUTHOR, 'Steve');
$c->addJoin(CommentPeer::ARTICLE_ID, ArticlePeer::ID);
$c->add(ArticlePeer::CONTENT, '%enjoy%', Criteria::LIKE);
$c->addAscendingOrderByColumn(CommentPeer::CREATED_AT);
$comments = CommentPeer::doSelect($c);
// 上記のコードは次のようなSQLクエリになる
SELECT blog_comment.ID, blog_comment.ARTICLE_ID, blog_comment.AUTHOR,
blog_comment.CONTENT, blog_comment.CREATED_AT
FROM blog_comment, blog_article
WHERE blog_comment.AUTHOR = 'Steve'
AND blog_article.CONTENT LIKE '%enjoy%'
AND blog_comment.ARTICLE_ID = blog_article.ID
ORDER BY blog_comment.CREATED_AT ASC



更新:2009/05/16 15:38 カテゴリ: symfony  > モデル(プロペル) ▲トップ

No.894 うずらメモより

◆SQL例
class webmemoActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    $this->category = $request->getParameter('category');

    $c = new Criteria();
    if ($this->category)
    {
      $c->add(WebmemoPeer::CATEGORY_ID, $this->category);
    }
    $c->addJoin(WebmemoPeer::CATEGORY_ID, CategoryPeer::ID);
    $c->addDescendingOrderByColumn(WebmemoPeer::UPDATED_AT);

    $this->webmemo_list = WebmemoPeer::doSelect($c);
  }
}
◆実行されるSQL
SELECT webmemo.ID, webmemo.TITLE, webmemo.BODY, webmemo.SUB_BODY, webmemo.KEYWORD,
  webmemo.INPORTANT_LEVEL, webmemo.CATEGORY_ID, webmemo.HTML_FLAG, webmemo.PRIVATE_FLAG,
  webmemo.DEL_FLG, webmemo.TURN, webmemo.CREATED_AT, webmemo.UPDATED_AT 
FROM `webmemo`, `category`  
WHERE webmemo.CATEGORY_ID='1' 
 AND webmemo.CATEGORY_ID=category.ID 
ORDER BY webmemo.UPDATED_AT DESC

更新:2009/05/16 15:37 カテゴリ: symfony  > モデル(プロペル) ▲トップ
7件中 1 〜 7 表示  1 

FuelPHP

Mac

web開発

プロマネ

マネタイズ

プレゼン

webサービス運用

webサービス

Linux

サーバ管理

MySQL

ソース・開発

svn・git

PHP

HTML・CSS

JavaScript

ツール, ライブラリ

ビジネス

テンプレート

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0