のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,647,299人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ【PHP】フレームワーク CakePHP 8ホール目【1.3】

php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
251 : nobodyさん - 2010/04/25(日) 15:27:11 ID:??? (-26,-29,-50)
DBを設計するとき、SQLで外部キーを設定しないでもhasOneとかで設定すれば良いのですか?
ガイドブック(1.1)にはMyISAMで作られてたし、SQL文見ても外部キーのことは書いてなかったし・・・

激しく即出な気が・・・
253 : nobodyさん - 2010/04/25(日) 15:38:43 ID:??? (+21,+23,-7)
各バージョンの機能比較してるサイトってどこかにないですか?
わかりやすく表形式とかで。
255 : nobodyさん - 2010/04/25(日) 16:34:18 ID:??? (+28,+29,-20)
>>254
みるかなじゃねーよw
使ってみて感想なり批評なりしろよ。
257 : nobodyさん - 2010/04/25(日) 19:22:32 ID:??? (+31,+29,+0)
>>255
使ってみた
気持ちよかった
259 : nobodyさん - 2010/04/26(月) 04:34:23 ID:??? (+33,+30,-58)
インターフェースや継承を駆使したガチガチな感じなんだろうけど
AOP的なのの使い所や命名なんかにルールを持たせとけば
ゆるくても品質はそんな下がったりせんけどな。
むしろPHPは言語サポートが少なすぎて厳密にやろうとすると疲れる。
261 : nobodyさん - 2010/04/26(月) 10:33:00 ID:??? (+18,+29,-14)
>>238
キーにアンダースコアを入れるとうまくいかなかった記憶が。。。
264 : nobodyさん - 2010/04/26(月) 16:04:48 ID:??? (+14,+20,+0)
>>263
先生、ありがとうございました!
265 : nobodyさん - 2010/04/27(火) 09:35:18 ID:??? (-27,-30,-127)
超亀だけど、前スレの質問
--
993 nobodyさん sage 2010/03/18(木) 08:05:51
1.3になってlibsってフォルダが増えたけど、
ここには何をいれるの?
vendorsとの違いは何??
--
http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp
で、CakeRoute クラスを上書きする記事が出てるけど、そのなかに
App::import('Lib', 'routes/SlugRoute');
ってあったから、こんな感じの使い方じゃないかな?
(vendorsはCakePHP関係ないファイルを入れるところ)
271 : nobodyさん - 2010/04/28(水) 16:53:38 ID:??? (-28,-30,-129)
CakePHP1.2.6使用です。

モデルのsaveでNULLを入れたいときはどうしたらよいでしょうか?
OrderというモデルのpriceをNULLにしたかったので

$this->data['Order']['price'] = null;
とか
$this->data['Order']['price'] = '';
してから

$this->Order->save($this->data);
したのですが、DBには0という値が入ってしまいます。

もちろん、DB側ではNULL化というテーブル定義にしています。
272 : nobodyさん - 2010/04/28(水) 17:02:58 ID:??? (-12,-29,-205)
最近さわりはじめてちょっと疑問に思ったことがあるので質問です。
今、適当な練習用サンプルを作っています。

利用するデータの編集をscaffoldを利用して作成しました。(Viewのみ多少修正)

しかし、削除のパスもリンクで表現されているので、(/hoge/delete/1 のように)
クローラーが巡回してきたらすべてのデータが消える気がします。

このデータは特に秘密にしたいようなものではなく、むしろ利用者で好き勝手に編集して問題がないので、セッション管理は行っていません。
セッション管理などしてない場所でscaffoldを利用するというのは想定外なのでしょうか。


現在はセッションを利用して対策する方向で修正していこうと考えていますが、
「何らかの対応方法がcakephpに用意されている」もしくは「もっと単純な対応策がある」
といった情報がありましたらぜひ教えてください。
274 : nobodyさん - 2010/04/28(水) 17:57:45 ID:??? (-28,-25,-28)
>>271

普通に保存できると思う。少なくとも自分はできてる。
DB側のデフォルト値をNULLにしとけば間違いないはず。

CakePHPはNULL使わないほうがよいみたい。
バリデーションもnullの扱いがおかしすぎる。
275 : nobodyさん - 2010/04/28(水) 18:00:09 ID:??? (-17,-13,-1)
バリデーションでnullって何か不具合あったっけ?
279 : nobodyさん - 2010/04/29(木) 03:17:58 ID:??? (-27,-30,-162)
間違えて送信してしまった。
$dataに更新用のデータが入っているとしたら、下のようにするくせをつけておいたほうが安心。

// 更新する場合はキーを指定
// $data[$this->Model->alias][$this->Model->primaryKey] = 更新するレコードのID;
// $dataにフォームから受け取ったデータなどを設定。

$this->Model->create(null); // モデルのデータを初期化。 nullにしないとDBのデフォルト値が入る。
$this->Model->set($data); // モデルにデータをセット。create()しておかないと、前回のデータとマージされる。

if ($this->validate()) {
$this->Model->save($this->data, false);
}
280 : nobodyさん - 2010/04/29(木) 03:24:05 ID:??? (-27,-30,-115)
>>if ($this->validate()) {

f ($this->Model->validate()) {

だった。上記のようにしたらnullもいけないかな?

だめならDB側のデフォルト値をnullにしておいて、

unset($data[$this->Model->alias]['created']);

$this->create($data); // データがないフィールドはデフォルト値を使うようにする。
$this->set($data);
...以下同じ...

とかしてみたらどうだろう?
281 : nobodyさん - 2010/04/29(木) 03:27:26 ID:??? (-26,-30,-67)
何度もすまん。

$this->Model->create($data); // データがないフィールドはデフォルト値を使うようにする。
$this->Model->set($data);

だ。
create()の中でset()と同じことされるからset()はいらないかもしれない。
282 : nobodyさん - 2010/04/29(木) 04:17:14 ID:??? (-12,-6,-50)
>>281

create()は主キーもリセットされてしまいます
ですから、この場合のset()は必須です

NULLを使わない設計ができるのであれば、それに越したことはないです
285 : nobodyさん - 2010/04/29(木) 10:55:21 ID:??? (+24,+26,-19)
CakePHPではNULLを使わないのが正解
どうしてもNULLを使いたいなら、ここまでに出た方法のどれかで凌ぐしかない
286 : nobodyさん - 2010/04/29(木) 11:12:30 ID:??? (+27,+29,-8)
ま、そういう造りだよね。はじめは気持ち悪かったけど慣れれば無問題
287 : nobodyさん - 2010/04/29(木) 18:11:37 ID:??? (-17,-30,-223)
cake 1.3 DBはmysqlの5.1.41 です。(xampp最新版を利用)

ランダムに1件レコードを取り出そうとして
$this->hoge->find('first', array(order'=> 'rand()')); はうまくいったのですが、

$this->hoge->find('first', array(order'=> 'rand(100)')); のようなシードを指定しての取り出しができません。

発行されているクエリは
SELECT …… ORDER BY rand(`100`) ASC LIMIT 1
のようになっており、エスケープされてしまっているようです。
エスケープさせない方法、または、シードを固定してのランダム取り出しの方法はないでしょうか?
288 : 287 - 2010/04/29(木) 22:54:24 ID:??? (-29,-30,-90)
とりあえずの応急処置(バッドノウハウ的な)

$this->hoge->find('first', array(order'=> 'rand((100))'));

としてrandにカッコを二つ続けて入れることで、置換対象から外しました。
queryのプレースホルダ的な感じでやりたいので、正当なやり方があったらぜひお教え願います。
290 : nobodyさん - 2010/04/30(金) 09:04:17 ID:??? (+18,+25,-21)
>>272-273
以前議論あったがscaffoldはそういうものっていう結論に落ち着いてた
bakeして、それを書き換えてあげるしかない
291 : nobodyさん - 2010/04/30(金) 12:13:53 ID:??? (-29,-29,-20)
>>290
ありがとうございます。 
scaffoldはそういうものということで納得します。

bakeして書き換えも試してみようと思います。
293 : nobodyさん - 2010/04/30(金) 15:39:48 ID:??? (+27,+29,-1)
やばい、わかり始めるとホントに楽しい。
294 : nobodyさん - 2010/04/30(金) 16:13:16 ID:??? (+33,+29,-5)
でもそのうち単調な処理を書くのが嫌になってくる
296 : nobodyさん - 2010/04/30(金) 16:46:22 ID:??? (+0,+6,-4)
>>295
タグ機能の実装解説してるブログなどを参考にするとわかりやすい
297 : nobodyさん - 2010/04/30(金) 17:47:47 ID:??? (-27,-30,-85)
フォームにテキスト入力した時、半角英数入力に自動的になるような
viewの書き方はあるでしょうか?

validateでalphanumericをすると、事後的にチェックはできるのですが、
そもそも入力した時点で半角しか入力できないようにしたいのです。

formのtypeをpasswordにしたらそのような設定になるようですが、
textで見えている状態で強制的に半角入力にする方法を探しています。
298 : nobodyさん - 2010/04/30(金) 18:22:22 ID:??? (-27,-29,-45)
>textで見えている状態で強制的に半角入力にする方法
ってことはアプリ側のロジックでなくて、ブラウザ側の話になるんでは?
スレ違いだけど、CSSのime-modeとかある、
299 : nobodyさん - 2010/04/30(金) 18:33:13 ID:??? (+38,+29,-31)
>>294

なんとなくわかるわw

それに同じようなコードを書くことになるんだよな・・・
300 : nobodyさん - 2010/04/30(金) 19:23:09 ID:??? (+19,+24,-23)
>>298

ありがとうございます!
ブラウザ側から処理するcakeの機能がないかなと調べていました。

ぐぐって調べてみます!
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について