symfony PHPフレームワークpart2 (531レス)
symfony PHPフレームワークpart2 http://medaka.5ch.net/test/read.cgi/php/1268753684/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
256: nobodyさん [sage] 2010/11/14(日) 03:01:31 ID:??? コードと同等(と思っている)のSQLをMySqlコマンドラインから実行すると、正常にいきます。 SELECT a.id, a.user_id, COUNT(*), DATE(a.created_at) AS date FROM access_log a WHERE (a.user_id = 'admin' AND a.created_at > '2010-11-01 00:00:00' AND a.created_at < '2010-11-29 23:59:59') GROUP BY date ORDER BY a.created_at; 「->andWhere('a.created_at < ?',$end)」の行を抜かすと一応取得はできます。 原因はなんでしょうか? $id = 'admin'; $start = "'2011-11-01 00:00:00'"; $end ="'2011-11-30 23:59:59'"; $this->accesslogs = Doctrine_Query::create() ->select('a.user_id, count(*) as count, DATE(a.created_at) as date') ->from('accesslog as a') ->where('a.user_id = ?',$id) ->andWhere('a.created_at > ?',$start) ->andWhere('a.created_at < ?',$end) ->groupBy('date') ->orderBy('a.created_at') ->execute(); http://medaka.5ch.net/test/read.cgi/php/1268753684/256
257: nobodyさん [sage] 2010/11/14(日) 03:04:05 ID:??? ついでにfixture.ymlも書いておきます。 AccessLog: log1: user_id: admin created_at: '2010-11-13 21:56:54' log2: user_id: admin created_at: '2010-11-13 21:56:54' log3: user_id: admin created_at: '2010-11-14 21:56:54' log4: user_id: admin created_at: '2010-11-14 21:56:54' log5: user_id: admin created_at: '2010-11-15 21:56:54' http://medaka.5ch.net/test/read.cgi/php/1268753684/257
258: nobodyさん [sage] 2010/11/14(日) 19:32:35 ID:??? (たぶん)解決しました。 ->from('accesslog as a') じゃなくて ->from('accesslog a') に変えると期待通りに動きました^^; 夜中3時間悩んだのに、昼に起きて5分で解決しました。 休憩や睡眠って大事ですね。みなさんもがんばってください。 なんで$endの行が無いときにうまくいったかは謎のままですが。。。 http://medaka.5ch.net/test/read.cgi/php/1268753684/258
259: nobodyさん [sage] 2010/11/14(日) 23:36:38 ID:??? sfDoctrineGuardPluginって使ってる人いる?? symfony慣れてないくせして導入してみたんだけど、symfonyとバージョン合ってないのかな? sfGuardRememberMeFilterが機能してない気がする。 settings.ymlで enabled_modules: [default, sfGuardGroup, sfGuardUser, sfGuardPermission, sfGuardAuth, sfGuardForgotPassword] を記述しても、バックエンドに追加されてない。 sfGuardUserは手動でバックエンドに追加できるけど、sfGuardPermissionは足りないファイルがたんまり。ネットで拾ってきてもまともに動かない。 あと、save-fixtureしてリロードすると、パスワードがハッシュされてログインできなくなる。 このあたり、どうにかなりませんか? http://medaka.5ch.net/test/read.cgi/php/1268753684/259
260: nobodyさん [] 2010/11/15(月) 21:25:47 ID:WH+q5o59 こうゆう複雑なSQLはDoctrineでできますか? Doctrineは単純なSQLだけで、複雑な合成はPHPでやったほうがいいのかな。 SELECT u.id as u__id, u.username as u__username, s.date as s__date, a.access as a__access, s.sales as s__sales FROM sf_guard_user u LEFT OUTER JOIN (SELECT user_id, DATE(created_at) AS date, SUM(amount) AS sales FROM sales GROUP BY user_id, DATE(created_at)) s ON u.username = s.user_id LEFT OUTER JOIN (SELECT user_id, DATE(created_at) AS date, count(*) AS access FROM access_log GROUP BY user_id, DATE(created_at)) a ON u.username = a.user_id AND s.date = a.date WHERE u.username = 'admin' AND s.date > '2010-11-01 00:00:00' AND s.date < '2010-12-01 00:00:00' ORDER BY s.date; http://medaka.5ch.net/test/read.cgi/php/1268753684/260
261: nobodyさん [sage] 2010/11/15(月) 23:40:15 ID:??? これ、どうゆう意味ですか? > 500 | Internal Server Error | Doctrine_Query_Exception > The root class of the query (alias s) must have at least one field selected. ユーザー毎の売上げを集計したいだけなんだけど。。。 #action.php public function executeSalelist(sfWebRequest $request) { $this->saless = Doctrine_Query::create() ->select('s.user_id as id, p.name, sum(s.amount) as amount') ->from('Sales s') ->leftJoin('s.Profile p') ->groupBy('id') ->execute(); } http://medaka.5ch.net/test/read.cgi/php/1268753684/261
262: 261 [sage] 2010/11/15(月) 23:41:34 ID:??? #schema.yml Sales: tableName: sales actAs: { Timestampable: ~ } columns: user_id: type: integer amount: integer relations: User: class: sfGuardUser foreign: id local: user_id type: many onDelete: cascade foreignType: many foreignAlias: Sales Profile: class: sfGuardUserProfile foreign: user_id local: user_id type: many onDelete: cascade foreignType: many foreignAlias: Sales http://medaka.5ch.net/test/read.cgi/php/1268753684/262
263: nobodyさん [sage] 2010/11/16(火) 03:02:08 ID:??? sfGuardPluginついでに。 > $this->setWidget('user_id', new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('User')))); フォームのプルダウンでuser_id=0のアカウントを選択してポストすると、 user_id=1として格納されてしまいます。 なんで〜?? http://medaka.5ch.net/test/read.cgi/php/1268753684/263
264: nobodyさん [sage] 2010/11/16(火) 03:53:30 ID:??? user_idをauto_incrimentにしてない? http://medaka.5ch.net/test/read.cgi/php/1268753684/264
265: 261 [sage] 2010/11/16(火) 13:36:35 ID:??? selectからp.nameをとるととりあえずいける。 Profileがおかしいのかな? Sales: tableName: sales actAs: { Timestampable: ~ } columns: user_id: type: integer amount: integer relations: User: class: sfGuardUser foreign: id local: use_id type: many onDelete: cascade foreignType: many foreignAlias: Sales Profile: class: sfGuardUserProfile foreign: user_id local: user_id type: many onDelete: cascade foreignType: many foreignAlias: Profile http://medaka.5ch.net/test/read.cgi/php/1268753684/265
266: 261 [sage] 2010/11/16(火) 13:38:26 ID:??? sfGuardUserProfile: tableName: sf_guard_user_profile actAs: { Timestampable: ~ } columns: id: integer user_id: type: integer primary: true bank_name: varchar(50) bank_point: varchar(50) bank_type: type: enum values: [ordinary, current] default: ordinary name: varchar(50) bank_number: varchar(50) relations: User: class: sfGuardUser foreign: id local: user_id type: one onDelete: cascade foreignType: one foreignAlias: Profile http://medaka.5ch.net/test/read.cgi/php/1268753684/266
267: nobodyさん [sage] 2010/11/16(火) 21:13:48 ID:??? フォーム難しいですね。。。 スキーマでは user_id(type:integer) にリレーションしてるんだけど、 フォームでは user_name(type:varchar(255)) で入力したい場合はどうすればいいですか? http://medaka.5ch.net/test/read.cgi/php/1268753684/267
268: 267 [sage] 2010/11/16(火) 21:27:44 ID:??? Newのときは下記コードでうまく「ユーザー名入力→ユーザーIDに変換」できるようになったんですが、 Editのとき編集フォームがuser_idのままです。。。 public function configure() { $this->widgetSchema['user_id'] = new sfWidgetFormInputText(); $this->setValidator('user_id', new sfValidatorString(array('max_length' => 128, 'required' => true))); $this->validatorSchema->setPostValidator(new sfValidatorCallback( array( 'callback' => array($this, 'validateUsername'), ), array( 'invalid' => 'アカウント名を正しく入力してください。', ) )); } http://medaka.5ch.net/test/read.cgi/php/1268753684/268
269: 267 [sage] 2010/11/16(火) 21:31:08 ID:??? public function validateUsername(sfValidatorBase $validator, $values) { if (strlen($values['user_id'])) { $user = Doctrine_Core::getTable('User')->findOneByUsername($values['user_id']); if (!$user) { throw new sfValidatorError($validator, 'invalid'); } $values['user_id'] = $user->getId(); } return $values; } } http://medaka.5ch.net/test/read.cgi/php/1268753684/269
270: 267 [sage] 2010/11/16(火) 22:50:03 ID:??? コンストラクタ上書きでできたけど、上記含めてお作法的にこれでいいんかな。。。 http://medaka.5ch.net/test/read.cgi/php/1268753684/270
271: 267 [sage] 2010/11/16(火) 23:45:05 ID:??? このスレにはお世話になってるし、 だれかの役に立つかもしれないから、動いたコンストラクタのコードも一応書いときます。 けんちゃんより(はぁと) public function __construct($defaults = array(), $options = array(), $CSRFSecret = null) { if(isset($defaults['user_id'])) { $user = Doctrine_Core::getTable('User')->find($defaults['user_id']); if($user) { $defaults['user_id'] = $user->getUsername(); } } parent::__construct($defaults, $options, $CSRFSecret); } http://medaka.5ch.net/test/read.cgi/php/1268753684/271
272: nobodyさん [sage] 2010/11/17(水) 05:44:26 ID:??? 他システムへのアクセスがあったときに、タスクを用いてSymfony側にアクセスログを取ろうとしています。 実行すると「There is no open connection」というエラーが出てしまいます。 なにがおかしいんでしょうか? > $databaseManager = new sfDatabaseManager($this->configuration); > $connection = $databaseManager->getDatabase('links')->getConnection(); を追加してみたのですが、 「 Database "links" does not exist.」 というエラーが出てしまいます。これは正しいDB名です。 http://medaka.5ch.net/test/read.cgi/php/1268753684/272
273: nobodyさん [sage] 2010/11/17(水) 05:46:56 ID:??? C:\MyProject\link>php symfony link:access user01 111.111.111.111 #accessTask.class.php <?php class accessTask extends sfBaseTask { public function configure() { $this->namespace = 'link'; $this->name = 'access'; $this->addArgument('username', sfCommandArgument::OPTIONAL); $this->addArgument('ip', sfCommandArgument::OPTIONAL); } public function execute($arguments = array(), $options = array()) { $access = new Accesslog(); $access->setUsername($arguments['username']); $access->setIp($arguments['ip']); $access->save(); $this->log('access from '. $arguments['ip']); } } http://medaka.5ch.net/test/read.cgi/php/1268753684/273
274: nobodyさん [sage] 2010/11/17(水) 10:31:09 ID:??? >>273 ・extends sfDoctrineBaseTaskにする ・executeの冒頭に $configuration = $this->createConfiguration('users', 'cli'); new sfDatabaseManager($this->configuration); と書く。 理屈は知らんがw doctrineならこれで動くんじゃね http://medaka.5ch.net/test/read.cgi/php/1268753684/274
275: nobodyさん [sage] 2010/11/17(水) 10:31:58 ID:??? あ、ごめん。createConfigurationの最初の引数はapp名で。 http://medaka.5ch.net/test/read.cgi/php/1268753684/275
276: nobodyさん [sage] 2010/11/17(水) 17:22:41 ID:??? できた〜! しっかし重いなぁ。。。 まだ連動させてないけど、Doctrineがログ吐くのが悪さしないといいんだけど。 (-quiet指定したら、"-u","-i","-e"オプションが無いとエラーが出たのであとで調べる。) http://medaka.5ch.net/test/read.cgi/php/1268753684/276
277: nobodyさん [sage] 2010/12/13(月) 19:58:07 ID:??? マイグレーションについてなんですけど、 カラムの追加は公式ドキュメントでなんとなく分かりました。 ただ、テーブル(既存テーブルとのリレーション有り)を新たに追加する場合は どうすればよいのでしょうか? Symfonyが吐いたテーブル作成のSQL文をコピペしてprod環境で実行、 モデル等のファイルをアップロード、 キャッシュクリア というような手作業になるのでしょうか? ビルドはいらないですよね? http://medaka.5ch.net/test/read.cgi/php/1268753684/277
278: nobodyさん [sage] 2010/12/13(月) 22:35:02 ID:??? http://localhost/example/web/index.php → http://localhost/example/ にするのはhttpd.cnfをいじるんかねえ?チラ) http://medaka.5ch.net/test/read.cgi/php/1268753684/278
279: nobodyさん [sage] 2010/12/13(月) 23:26:51 ID:??? まだあまりsymfonyを理解していないのですが、 symfony doctrine:build --all --and-load すると、まずデータベースがdropされますよね? 複数プロジェクトで共通のユーザー情報マスタDBを使うつもりでいるので 1つのプロジェクトを更新するたびにユーザー情報がdropされると困るのですが、 どのように構成すればよいでしょうか? #仮にユーザー情報マスタDBのスキーマだけを持ったプロジェクトを作って、 #ほかのプロジェクトはユーザー情報DBをスキーマに記述しない構成も考えたのですが、 #モデル等が作られないのでリレーション等が働かない気がしています。 http://medaka.5ch.net/test/read.cgi/php/1268753684/279
280: nobodyさん [sage] 2010/12/14(火) 07:43:09 ID:??? >>278 つttp://symfony-doc-ja.googlecode.com/svn/branches/1.2/html/book/09-Links-and-the-Routing-System.html#url.rewriting http://medaka.5ch.net/test/read.cgi/php/1268753684/280
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 251 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.014s