トップページphp
1001コメント278KB

フランチョスとsymfony

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/01/24(木) 21:26:07ID:???

http://www.symfony-project.org/
コードスニペット
http://www.symfony-project.org/snippets/tag
プラグイン
http://trac.symfony-project.com/wiki/SymfonyPlugins

どうぞ つ
0636nobodyさん2009/02/16(月) 08:41:43ID:???
いつまでも穴あきの5.1使うような仕事なんてしてちゃだめだろ
0637nobodyさん2009/02/16(月) 12:40:27ID:???
仕事を選べない人は大変ですね
0638nobodyさん2009/02/16(月) 13:00:38ID:Eg6IU/sq
pluginアップしてみたんだけど
リポジトリにあげる前に一度symfony plugin:install プラグイン名しちゃって
No release available for plugin プラグイン名
というエラーメッセージがでたんです。

で、その後ファイル上げてから何度やっても同じメッセージでインストールできなくなっちゃいました。
ためしに別のサーバーに入れてみたら普通にインストールできました。

symfony cc
とか
pear clear-cache
とか
rm -f cache/.pear
とか
pear channel-update plugins.symfony-project.org
とかやってみたけどだめでした。
サーバー再起動もだめでした。

どなたか方法ご存知の方いらっしゃいませんか?
06396332009/02/16(月) 16:25:53ID:???
>>635
ありがとうございます。

$this->genUrl()
でダメだったのであきらめてました。

でも、なんでこんなに長いんだろう・・・;
0640nobodyさん2009/02/16(月) 16:48:05ID:???
欲しいメソッドはmyActionに実装したらいいだけジャン
0641nobodyさん2009/02/16(月) 23:37:58ID:???
>>639

補足
アクション内からなら、
sfContext::getInstance()->getController()を
$this->getController()に変更出来る(やってることは同じ。少しは短くなった?)

また、内部URLではなく、ルート名と、クエリパラメータにする値が分かっているのなら、アクション内で
$this->generateUrl($route, $params, $absolute)を呼ぶことでURLを生成することができます。

ここで、
$routeはルート名
$paramsはモデルオブジェクトか値の配列。

ただしモデルオブジェクトが渡せるのは、ルートのoptions['type'] === 'object'の時のみ。
(一言でうまく説明出来ないので、詳細はsfObjectRoute::generate()のソース見て)

配列であれば、タイプに関係なく渡せる。
クエリパラメータが不要な時は空配列(array())

$absoluteは>>635同様、絶対パスか相対パスかどうか


わたしは、アクション内でリダイレクトのURLを作成する際にgenerateUrl()を使用しています。
0642nobodyさん2009/02/17(火) 20:01:10ID:K56TvPG0
PropelでEXISTS演算子を使いたい場合、やっぱりCriteria::CUSTOMで直接記述するしかないのかな?
まぁ、副問い合わせも使うんだし、当たり前といえば当たり前か。
やってみたことある人いる?
0643nobodyさん2009/02/18(水) 08:04:45ID:???
質問です。

DBテーブル定義を修正しようとして、schema.ymlを修正し、
./symfony propel-build-all を実行すると、
DBテーブルの内容が全部消えてしまいます。

今はダンプファイルを取っておいて、あとで書き戻すことで対応していますが、
何かもっと洗練された方法はないでしょうか?
0644nobodyさん2009/02/18(水) 09:08:41ID:???
propel-build-model
06456432009/02/18(水) 09:25:54ID:???
追記です。

propel-load-data というコマンドがあるようです。

しかしこれは、DBにセットするデータをyamlファイルで用意してやらなければ
なりません。WEBブラウザなどからDBに入力したデータをyamlファイルに書き出
す方法は無いようなので、yamlファイルを作るのはちょっと手間に感じられます。

これならダンプファイルを取っておいて、それをエディタで修正してロードす
るほうが現実的なような...。
0646nobodyさん2009/02/18(水) 12:45:51ID:???
すみません、symfony & MySQLで、最後に挿入した行のIDを取得するには、
どうしたらいいですか?
0647nobodyさん2009/02/18(水) 19:49:24ID:???
>>645
自分は
http://www.symfony-project.org/plugins/sfPropelSqlDiffPlugin
これをつかってるよ。
06486432009/02/18(水) 21:35:13ID:???
>>647
ありがとうございます。参考にさせていただきます。

Plugins | sfPropelMigrationsLightPlugin | 1.1.2 | symfony | Web PHP Framework
http://www.symfony-project.org/plugins/sfPropelMigrationsLightPlugin

こんなのもあるようです。Rails の Migration と同じなのかしら。
0649nobodyさん2009/02/18(水) 21:46:02ID:???
>>648
全然違う
0650nobodyさん2009/02/18(水) 21:51:22ID:???
>>610
$c =new Criteria();
$c->add(TJobPeer::ID,
"(t_job.ID IN ( SELECT v_rel_job_area.JOB_ID FROM v_rel_job_area WHERE v_rel_job_area.DISTRICT_ID = 1 ))
AND
(t_job.ID IN ( SELECT t_rel_job_category.JOB_ID FROM t_rel_job_category WHERE t_rel_job_category.CATEGORY_ID IN (1, 5, 6) ))
AND
( (t_job.STATUS IN (1, 2)) OR (t_job.STATUS = 0 AND t_job.ID IN ( SELECT t_rel_job_publish.JOB_ID FROM t_rel_job_publish WHERE t_rel_job_publish.PUBLISH_ID = 1)) )
", Criteria::CUSTOM);

$rs = TJobPeer::doSelect($c);
0651nobodyさん2009/02/19(木) 20:08:27ID:???
>>646
Propelなら、モデルのsaveメソッドを呼び出した後、単にgetすればOK。
Doctrineは知らんw
0652nobodyさん2009/02/24(火) 21:06:31ID:???
symfony1.2ってデバックモードの時WEBデバックツールでSQLって表示される?
symfony1.0の時はされたと思うんだけど、1.2からされなくなってるみたいで。
あと、1.2で実行したSQL文そのものって取得できますか?(1.0でのgetLastExecutedQueryのような)
0653nobodyさん2009/02/24(火) 21:19:50ID:???
>>652
SQL表示されるよ

symfonyどこにインストールしてるか知らんけど、pearから取ってきたのなら、
javascriptを有効にした上で、
data/symfony/web/sfに対して、仮想ディレクトリ(エイリアス)を作るか、
プロジェクトのwebフォルダにコピーすれば、いけるはず。

また、この情報は、実行したログを解析してるだけだろうから、ログ直接眺めてみたらいいんじゃない?

1.2から使い始めたので、getLastExecutedQueryとか分かんね。
これも、ログ見たらいいんじゃないの?としか言えない

0654nobodyさん2009/02/25(水) 12:03:02ID:???
>>652
バージョン古いか、propel.iniの設定か
0655nobodyさん2009/02/25(水) 13:06:51ID:???
>>653
>>654
database.ymlのclassnameをprodと同じにしてたのが原因だったみたいです。。
DebugPDOに変えたらSQL表示されました
getLastExecutedQueryはログがどうやってSQL取り出してるか探してみます
0656nobodyさん2009/02/25(水) 13:11:42ID:???
Propelってsqlつくるだけってのが出来ないのがウザイな。
絶対実行とセットだから、サブクエリやろうとすると独自拡張に頼らざるを得ない
0657nobodyさん2009/02/27(金) 14:01:43ID:???
symfonyの問題じゃないかもだけど、携帯サイトで実行結果をファイルにキャッシュって
セッションIDをURLで埋め込むから出来ないよね?
0658nobodyさん2009/02/28(土) 23:20:00ID:???
できるよ
0659nobodyさん2009/03/03(火) 15:02:29ID:???
>>656
$sql = BasePeer::createSelectSql($criteria, array());
0660nobodyさん2009/03/10(火) 07:45:12ID:???
>>659
あのさ、$c->add(ModelPeer::ID , 1);
とかやってごらん
idのとこが?になってるだろ?
?を置換する独自拡張が必要という意味だって思わなかった?

あと、第二引数は参照になってるから、 array()なんてやっちゃ駄目だよ。
勉強になったかな?
0661nobodyさん2009/03/11(水) 06:50:03ID:???
symfonyで自作のクラス組み込んだ時とかに、
不具合があっても画面真っ白でエラーも表示されないってことない?
レスポンスが情報吐く前にコケてるのか知らないけど
この状態になるとすげーデバッグしにくい。
高度にレスポンス管理するのも考えものだよなぁ
0662nobodyさん2009/03/11(水) 08:53:10ID:???
>>661
Apacheのエラーログ見たら
PHPレベルのFatalエラー吐かれてない?
dev環境だけ表示される場合もあるし、
/var/log/messagesかも。
0663nobodyさん2009/03/11(水) 09:09:27ID:???
>>662
apacheログのこと忘れてた!と思って見たら
exit signal Segmentation faultが大量に・・
調べたらxdebugの設定ミスだった
助かりました。ありがとう!
0664nobodyさん2009/03/13(金) 13:57:23ID:???
Cakeからsymfonyに移りたいのですが、
なにから勉強すればいいのかわかりません。

定番のチュートリアルなどあるのでしょうか?
いくつか見つけたのですが、バージョンが古いようで・・・

主にsfFormの使い方とデータの登録・取得、ログイン処理などを覚えたいのですが・・・
0665nobodyさん2009/03/13(金) 14:29:07ID:???
>>664
symfony 1.2ならJobeet
http://www.symfony-project.org/jobeet/1_2/

11日目までは日本語訳されてる。
http://d.hatena.ne.jp/Kiske/archive?word=jobeet

なんと12日目も公開されてた。感謝。

ログイン周りは13日目かな。
06666642009/03/14(土) 00:20:34ID:???
>>665
1.2向けのチュートリアルが始まっていたのですね!
翻訳してくれている方もいるとは・・・

さっそく試してみたいと思います!
0667nobodyさん2009/03/14(土) 02:41:54ID:???
>>664
移りたいと思った理由を知りたい
06686642009/03/14(土) 03:16:17ID:???
>>667
Cakeは標準でコンポーネントなどが充実していて便利なのですが、
それらのクセが強くて、
ちょっと外れたことをしようとするとえらい面倒で・・・
とくにAuthコンポーネントやSecurityコンポーネントなど。

また、Cakeで作られたサイトは、
だいたい、ちょっと見ただけですぐCakeで作られていると分かります。
それくらいクセが強いです。

うまくいえませんが、こんなかんじです。
0669nobodyさん2009/03/14(土) 09:25:05ID:???
質問です。

キャッシュ機能を使って、任意の文字列をキャッシュしたいのですが、
どのようにすればよいのでしょうか?
分かる方がいましたら教えてください!
0670nobodyさん2009/03/14(土) 15:43:13ID:???
すみませんが、質問です。
fillin がうまく動かないのですが、これはどこに問題があるのでしょうか?
○仕様:page/hoge → page/fuga に遷移

○actions.class.php
public function executeHoge() { $this->hoge = "ほげ"; }
public function executeFuga() { }
public function handleErrorFuga() { $this->forward('page', 'hoge'); }

○hogeSuccess.php
<?php
echo form_tag('page/fuga');
echo $sf_request->getError('hoge');
echo input_tag('hoge', $sf_params->get('hoge'));
//echo input_tag('hoge', $sf_request->getParameter('hoge', $hoge));
?>
</form>

○fugaSuccess.php
<h1>おめでとう!</h1>

○validation/fuga.yml
fillin:
  enabled: on

fields:
  hoge:
    sfStringValidator:
      min: 3
      min_error: "ほげは3字以上で入力してください。"
06716702009/03/14(土) 15:48:40ID:???
すみません、hogeSuccess.phpが間違っていました。

○hogeSuccess.php
<?php
echo form_tag('page/fuga');
echo $sf_request->getError('hoge');
echo input_tag('hoge', $hoge); // 直した行。
//echo input_tag('hoge', $sf_request->getParameter('hoge', $hoge));
?>
</form>

うまく動かない、というのは、バリデーションが働いてhogeSuccess.phpを表示
したとき、ユーザの入力値ではなく、デフォルト値"ほげ"が表示されてしまう
ということです。

その下のコメントアウトした行のように書けば動きますが、この記述だと
fillin: enabled: off にしてもユーザの入力値になるので、fillinが働いてい
るとは言えないと思います。

なお、コメントアウトした行の記述が冗長なのは、以下の理由です。

○[symfony] テンプレートで使える$sf_params->get()の2番目の引数について
http://gomojp.blog77.fc2.com/blog-entry-54.html

以上です。どなたかアドバイスをお願いします。
06726702009/03/14(土) 16:11:20ID:???
補足です。

symfonyでhierselectができる!の補足(fillin時の手当) | LinuxなWEBデザイナーの覚書き。
http://php-sql-gdgd.jugem.jp/?eid=13

> fillinを受ける側のフォームは、各input_tag等のフォームヘルパー関数の引
> 数2つ目(デフォルト値を入れるところ)をnullにする。
> ※私は最初「''」を指定した状態でフィルインできませんでした。object系
> のフォームヘルパーを使ってDBからデフォルト値を持ってきてる場合はどう
> なるんだろう??今度実験してみよう…

たしかに、hogeSuccess.php を

echo input_tag('hoge', null); // さらに直した行。

と書くと、バリデーションが hogeSuccess.php に差し戻したとき、フォームに
ユーザの入力値が入っていました。fillinが動作したようです。

しかしこれでは、デフォルト値の設定ができなくて困ります。page/hoge では
$hogeの値である"ほげ"がフォームに入っていて、バリデーションが動作したと
きは、ユーザの入力値が表示されてほしいのです。
06736702009/03/14(土) 16:30:13ID:???
すみません、自己解決? したみたいです。

試行錯誤して、
echo input_tag('hoge', null, array('value'=>$hoge));
と書いてみたら、希望していた通り、デフォルト値もユーザ入力値も表示され
ました。

しかしこれもかなり冗長なので、ためしに
echo input_tag('hoge', $hoge);
に戻したところ、今までと違って、問題なく表示されたのです。
なんで?!最初のコードと少しも変わらないのに?!

とりあえず動作はするようなので、このまま開発を進めることにします。
お騒がせして申し訳ありませんでした。
0674nobodyさん2009/03/16(月) 15:50:44ID:???
質問なんだけど、validation/[アクション名].ymlって、部品化とかして共通化
する方法は無いんだろうか?

二つのアクションがあって、大部分のフィールドは共通なんだけど、片方にだ
けいくつか追加フィールドがあるので、バリデーションの設定の大部分が共通
になる。うまくまとめられたらいいと思うんだけど。
06756742009/03/16(月) 16:50:44ID:???
すみません、自己解決? したみたいです。
0676674 ◆UAG1fZyrYA 2009/03/16(月) 18:47:06ID:???
>>675 は騙り。まだ解決してない。
0677nobodyさん2009/03/17(火) 10:32:44ID:???
継承
0678nobodyさん2009/03/18(水) 16:33:36ID:???
だからsfFormが生まれたわけで
0679nobodyさん2009/03/20(金) 20:30:44ID:bZdrj/Cj
sfFormの話が出たので少々便乗。

1.1以降でSymfonyをステートフルにするには、sfFormでCSRF対策フィールドを1リクエストごとにユニークにすればいいんだよね?
ソースを嘗めたらそんなに難しくなさそうな気がしたんだけど、何か勘違いしてるかな?

いや、「PHPのフレームワークでステートフルなのはPiece Frameworkだけ、なんて文章をちらりと読んだんでね。
もちろん、↑のやり方だと、sfFormで値を持ちまわしているところしかステートフルにならんのは理解してる。
Piece Frameworkのステートフル機能のウリは、getだろうと初回のpostだろうと(その気になれば)ステートフルに出来るってところなんだろうとは思うけど。
0680nobodyさん2009/03/22(日) 04:10:40ID:???
質問です。
1.2使ってるんですが、フォームからunsetで消した項目に、
POSTされた際にアクション内で値をセットするにはどう書けばいいのでしょうか?
送信された値から別の値を生成してインサートする、みたいなことがやりたいです。
0681nobodyさん2009/03/22(日) 18:32:07ID:???
もうCakeのはいいからどっかsymfonyの本をだしてくれ〜
0682nobodyさん2009/03/22(日) 22:34:47ID:XhaR9twF
>>680
自分は1.1だが、そーゆーことやりたいときはbindする前の配列いぢくる。 一度validateしたいときは、

1.普通にbind
 ↓
2.NGならおしまい、OKなら値生成→配列に格納
 ↓
3.バリデータを置き換える
 ↓
4.もう一度bindしてvalidate

かな。まぁ、sfFomオーバーライドすればもう少しスマートに出来ると思うが。

>>681
だね。もう少ししっかりした、1.1/1.2対応の解説書は欲しい。
0683nobodyさん2009/03/23(月) 21:55:16ID:???
書籍なんていらねーよ。1.1も1.2も一年しかメンテナンスされない使い捨てリリースだし。
0684nobodyさん2009/03/23(月) 22:14:03ID:???
そんなこと言ったらほぼ全てのFWの本がいらんことになる
0685nobodyさん2009/03/24(火) 07:21:18ID:???
1.0は3年リリース。
ほぼ全てとか何言ってるんだろこの人
0686nobodyさん2009/03/24(火) 14:15:27ID:???
すみませんが、質問です。

symfony 1.0 の環境に、sfCSRFPluginを導入して利用しようとしているのです
が、うまく動作しないのです。

sfCSRFPlugin - symfony-doc-ja - CSRF対策用プラグイン - Google Code
http://code.google.com/p/symfony-doc-ja/wiki/sfCSRFPlugin

コードを見ると、METHOD=POSTの時だけ、トークンの値をチェックするようになっ
ているのですが、どういうわけか、このフィルタの中では、POSTの場合でも
GETだと認識されて($_SERVER['REQUEST_METHOD']が"GET"となる)、チェック
がいつも働かないのです。

このフィルタ以外の場所、例えばactionクラス等では、GETかPOSTかを正しく検
出できています。

どうにも原因が分からないのですが、どなたかアドバイスをいただけないでしょ
うか?
0687nobodyさん2009/03/24(火) 18:45:26ID:???
フランチョスに聞いてください
0688nobodyさん2009/03/25(水) 11:35:03ID:???
腐乱著すですが何か?
0689nobodyさん2009/03/25(水) 13:42:58ID:???
寒い…このひと寒すぎる。
書き込む前に確認しようよ。
自分がどれだけ恥ずかしいことを書いているかを。
2chだけでなく日常生活でも、寒いことを言っては
場を凍りつかせているんだろうね。
0690nobodyさん2009/03/26(木) 11:33:19ID:???
symfonyって、あるアクションに対してPOSTだけしか受け付けないように設定する
ことってできませんか?
0691nobodyさん2009/03/26(木) 12:26:50ID:???
getPostParameterで値が取れれば処理、取れなければエラーかリダイレクト、とか。
0692nobodyさん2009/03/26(木) 13:00:31ID:???
isMethodみたいのがなかったっけ?
06936902009/03/26(木) 13:08:38ID:???
PHPコードでやれば判別はできますが、validation/<アクション名>.ymlや
filters.ymlなどで設定する仕組みが、symfonyには用意されていないでしょうか?

>>691
後出しですみませんが、1.0限定でお願いします。

>>692
sfRequest::getMethod() ですね。
0694nobodyさん2009/03/26(木) 13:11:39ID:???
methods:[]
だっけな。なんかそんなのあったわ
06956902009/03/26(木) 13:21:03ID:???
>>694
たぶんそれは、↓だと思うのですが、

メソッドへのバリデーションを制限する - 第10章 - フォーム
http://symfony.xrea.jp/1.0/book/10-Forms.html#restricting.the.validation.to.a.method

どのメソッドに対してバリデーションを実行するか、の設定であって、
POST以外を弾くという設定ではないみたいです。

やっぱりPHPコードを書かなきゃ駄目なのかな。
0696nobodyさん2009/03/26(木) 13:37:01ID:???
zendなんかはそういう指定できるけど
postしか許可しないactionを別に指定するブラックリスト方法は
何かの都合でaction名を途中で変えた場合に、
設定だけが残る可能性があるから疑問
0697nobodyさん2009/03/26(木) 19:40:45ID:???
1.0にsfFormもってこりゃいいじゃん。
0698nobodyさん2009/03/28(土) 22:39:09ID:???
pdt2.0から /* @var $test Test */ の補完がきかなくなったな
0699nobodyさん2009/03/29(日) 00:23:38ID:WiWw0VPX
1.2でDoctrine使ってるんだけどSQLクエリーのログって出てる?
envがdevでwebdebug trueでもどこにも出てる気配ないんだけど。
なんか最初のうちは1.1の時みたいにwebdebugに円柱のボタンがあった気もするんだけど・・・・
logにsfDoctrineLoggerっていうボタンはあるけどクエリーは何も出てない。

いろいろいじってるうちにおかしくなったのかな?
0700nobodyさん2009/03/29(日) 01:22:25ID:???
>>699
ちょっと上のレスを見ろ
07016992009/03/29(日) 09:22:10ID:WiWw0VPX
>>700
ほうほうDebugPDOですか。
すんません、Doctrineの時はどうすればいいのでしょう?
paramかattributesになんか書くのでしょうか?
0702nobodyさん2009/03/29(日) 11:32:28ID:???
つーか普通に出るし
0703nobodyさん2009/04/01(水) 00:43:45ID:???
symfonyからODBC接続でDB2からデータ持ってきたいんだけど、なぜか日本語が化けるんです。
Z^Z^Z^みたいな。
何でですかね・・・。
0704nobodyさん2009/04/01(水) 01:29:49ID:???
眠いからじゃないかなzzz
0705nobodyさん2009/04/01(水) 10:57:37ID:???
>>703
DB2かぁ、動作報告あったっけ?

まずは propel db2 でgoogleじゃない?
あるいは doctrine db2 か。
0706nobodyさん2009/04/01(水) 12:37:40ID:???
DB2の内部コードSJISにしてるとかじゃないの
0707nobodyさん2009/04/01(水) 22:27:12ID:???
symfony1.0系で開発をしているのですが、
Validator、Helperなどが
マルチバイトに対応していない事わかりまし。
ソースコードのマルチバイト対応情報が
あればおしえてぷりーず。

と書いたところで
1.2はマルチバイト対応済みじゃん・・・
くやしいのでそのまま投稿。
なんでバックポートしてないんだ。
0708nobodyさん2009/04/03(金) 12:08:01ID:???
OpenPNE以外でsymfony1.2を使ったオープンソースのものって何かないですか?
ソース読んで勉強したいのですが・・・
0709nobodyさん2009/04/03(金) 21:10:14ID:???
バージョン上がるたびに諸々の変更を余儀なくされるsymfonyは採用されないだろ
0710nobodyさん2009/04/04(土) 17:50:58ID:???
メジャーバージョンアップとマイナーバージョンアップの区別がつかない奴がいるとは思わなかった
0711nobodyさん2009/04/21(火) 22:02:48ID:oOMQhPeY
responseにsetHttpMetaメソッドあるけど、
HttpじゃないMetaってあるの?
setMetaでよくね?
0712nobodyさん2009/04/24(金) 00:06:42ID:???
>>711
ソース(AssertHelper.php)見ると、<meta http-equive...>と出力させたい場合は、addHttpMeta()で追加、
<meta name=...>と出力させたい場合は、addMeta()で追加するらしい。

symfony 1.2系には、setHttpMeta, setMetaは無いね。削除されたのかな?

1.2系では、sfResponseに直接追加しなくても、view.ymlで設定すればおk。
0713nobodyさん2009/04/25(土) 21:56:50ID:???
symfony1.1.6なんですけど、
config_handlers.yml
で独自ハンドラを追加して、
そのクラスをlib直下においたら、アクセス時にその独自ハンドラが存在しないと
怒られるんですが、どうしてですかね・・・・。
debugがONだと動くのですが。。。
0714nobodyさん2009/04/26(日) 23:35:53ID:???
>>713
prod環境(debug=off)では、複数のファイルの読み込みを避けるためなのか、いくつかのクラスをpackingしています。
このクラスの中には、sfAutoloadも含まれています。

packingする際、まず先に、config_handlers.ymlに設定された、「すべての」ハンドラをインスタンス化しようとします。

独自ハンドラについては、まだsfAutoloadがインスタンス化されていないため、オートロードに失敗します。

debugがonの場合、packingしないため、先にsfAutoloadがインスタンス化されます。
それゆえ、独自ハンドラもsfAutoloadを通して、読み込むことができる様になります。

この問題を解決するために、sfAutoloadに頼らず、手動でクラスファイルをinclude(require)します。

includeする場所は、ProjectConfigurationが最適でしょう。
07157142009/04/26(日) 23:40:24ID:???
蛇足ですが、sfAutloadが読み込まれていないからといって、
先にsfAutoloadを手動でincludeしてしまうと、その先で二重定義だと言われて、
実行時エラーとなってしまいます。
0716nobodyさん2009/04/27(月) 07:39:55ID:???

ttp://www.namiten.com/haruka/web/frontend_dev.php/
0717nobodyさん2009/04/27(月) 12:34:04ID:???
塾所www
07186992009/04/29(水) 16:03:53ID:rB9MGWda
1.2 doctrineでSQlLのクエリーログが出なくなった原因わかりました。
ひつようない?いらない?一応張っておきます。

http://gomojp.blog77.fc2.com/blog-entry-75.html
0719nobodyさん2009/04/30(木) 16:07:02ID:???
なんでpropel、count()なんてしてしまうん
0720nobodyさん2009/05/07(木) 12:16:55ID:???
propelでサブクエリーとJOINって出来る?
SELECT * FROM foo main JOIN (SELECT sub.id, MAX(sub.add_date) AS max_add_date FROM foo sub......) ON main.id = sub.id AND main.add_date = max_add_date WHERE ......
みたいなのが作りたいんですけど

最悪ONはWHEREに書いてもいいかな。
無理っぽいのかなあ。どうでしょうか?
07217202009/05/07(木) 12:19:38ID:SY3Om6u2
ああ、またデフォルトでsageはいってた。
専用ブラウザこの設定うざいな。しつれいしました。

あとpropelでというかCriteriaでの間違いでした。
お願いします。
07227202009/05/07(木) 12:38:05ID:???
すまん
検索キーワード変えたらすぐ見つかった
ttp://blog.gnetworks.co.jp/nk2/?p=44
07237142009/05/07(木) 22:58:24ID:???
>>720
複雑なクエリは、無理してCriteria通さずに、直接SQL渡した方が見通しがいいような気がする。

$stmt = Propel::getConnection()->prepare('select ...');
$stmt->bindValue(..); // パラメータを渡す必要があるなら
$stmt->execute();
while (($row = $stmt->fetch(PDO::FETCH_BOTH) != false) {
...
}
0724nobodyさん2009/05/08(金) 02:48:43ID:???
クエリも使いまわしたりするからな。
直接SQL渡すより極力Criteriaで使ったほうがいい。

そういうプログラミングをしないならDoctrine使ったほうが良い
0725nobodyさん2009/05/08(金) 07:23:57ID:???
クエリ使いまわすなら、どこかのテーブルクラスに入れとけばいいだけかと。
SQL直書きの方が見通しが良くなる事も普通にあると思う。
どっちがいいかというのは難しい問題だけど、その時々の決められた方針に従うとか。
>>724
しばらくPHPはほぼ触ってないんだけど、Doctrineはもう実用レベルなんだ。
見てみよう。

0726nobodyさん2009/05/16(土) 04:48:31ID:???
Propelは取得するカラム増減するだけで、setとかhydrateとか自分でやらないかぎりモデルがまったく使えなくなるのがメンドイ。
てか、1.3からpoolとかしてるから、下手に自前でやると危険そう。そこでsave呼ばれたときを考えたりすると・・・
まあORマッパーなんだから、selectいじるなってのはあるんだろうが。

Doctrineってそういうの強そう?
0727nobodyさん2009/05/16(土) 06:05:29ID:???
>>726
いや、その為にPeerBuilderで拡張できるようになってるわけだが。
BasePeerをちょっと拡張したクラス準備するだけでもいいし。
いくらでも手はあるし、そういうことができるように作られている。
0728nobodyさん2009/05/16(土) 06:07:26ID:???
このひとのとか
http://code.google.com/p/openforce-symfony-plugins-project/wiki/ofPropel13Plugin
0729nobodyさん2009/05/19(火) 14:29:31ID:qhW3ZTR1
キャッシュファイルが多すぎてsymfony ccがなかなか終わらないんだけど
どうしたらいいの。
サービス稼働中だとキャッシュの作成とバッティングして時間かかるんかなぁ
psでプロセス見るとD(割り込み不可=IOアクセス中)のままだ。
cache clearはサービスを止めて行うもの?
0730nobodyさん2009/05/19(火) 14:36:50ID:???
てか、サービス止めて、
ディレクトリごとrm -rfした方がずっと速いかも・・
0731nobodyさん2009/05/19(火) 16:47:50ID:???
>>729
コンテンツキャッシュはぶっちゃけSQLiteキャッシュ使ったほうが何かと勝手がいいぞ。
キャッシュの削除条件設定も柔軟に対応できるし。

ファイルキャッシュは増えてくると不都合が多すぎる。
0732nobodyさん2009/05/31(日) 06:43:32ID:rQz6XN2i
1.2使ってます

DBにname address tel category file
とあってfileとcategoryはそれぞれ別で登録するようにしたいのですが
sfFormつかうとfileやcategoryを登録したら他のデータがきえちゃいます。
個別にフォームヘルパーつかって登録するとかみたいな方法しかないですか?
07337142009/05/31(日) 13:22:23ID:???
>>732
ORM何使ってる
Propel?
Doctrine?

Propelなら、
Modelの各フィールドに対して更新フラグが立っている場合のみ、Update対象列になる。
resetModifiedメソッド呼んで、更新対象外フィールドのフラグ折ってやれば、多分おk



Doctrineは...知らん
0734nobodyさん2009/05/31(日) 13:24:24ID:???
>>733
名前欄残ってた。orz
関係ないから無視しといて。
0735nobodyさん2009/05/31(日) 14:26:16ID:rQz6XN2i
>>733
あぁ、そうか・・・。
スケルトンのとおりにvalodator通した後そのまま
$myTabler = $form->save();
ってやってたから全部保存されちゃってたんですね。

必要なフィールドだけセットして保存しちゃえばよかったんだ
ありがとうございました。やってみます
■ このスレッドは過去ログ倉庫に格納されています