元スレ【PHP】フレームワーク CakePHP 19ホール目【v3.3】
php覧 / PC版 /みんなの評価 :
302 = :
>>296
サブクエリー内外で カラムが「*」の上、WHEREもJOINも無い
エスパー推測で以下のよーなSQLを使いたい、と勝手に解釈する
SELECT col1,col2 FROM
(SELECT col1,col2,col3 FROM TableA WHERE col1=5);
これと似た構造をCakePHP3のクエリビルダで書けるには書けるが、
「遅延実行」という仕組みがある為、生成されるSQLは大体こうなる
SELECT col1,col2 FROM TableA WHERE col1=5;
あと、MySQLとMariaDBでは1回のSQLで使えるインデックスは1つだから
サブクエリーを多用すると遅くなる
メンテナンス性が高まる、とかいうメリットを考えてるかもしれんが、
速度を改善したくなったり、見やすいコードを書きたくなったりする時期が来た頃には手遅れやぞ?
304 = :
何でもかんでも自動化しすぎた弊害やな
ひどすぎ
305 :
>>302
クエリが変わってるんですけど・・・
あとたったこれだけのサブクエリでレスポンスが遅くなるとは思えないんですけど・・・
306 = :
そこまで言うやつがなんでそんな質問した?
307 = :
>>305
「遅延実行の仕組みで」って書いてあるのは無視か?
SQLが短いのは、クエリビルダ使用前と使用後の違いを目立たせるため
実務なら普通に1行で書く
$hoge=$this->TableAs->find()->select(['col1','col2'])->where(['col1'=>5]);
(TableAがTableAs になってる、とか言い出すアホはいないと信じたい)
で、2重構造にするなら思いつくだけでも3つ以上ある
1 VIEW を使う
2 Modelにサブクエリ風のfunction書く
3 ModelにbyHoge(Query,$options=[])を用意してControllerからfindbyhogeで呼ぶ
4 Cpntroller内でクエリビルダを2回使う
TableAが定義されてないのに、これ全部例示する気にはならんわ
308 = :
ちんぺい @chinpei215
先日の RequestHandler に起因する脆弱性の公式アナウンスがありました。また非公式ですが私の方で翻訳を行っています。
http://mbstring.com/news/potential-information-disclosure-in-application-skeleton/
14:06 - 2017年12月10日
309 = :
310 = :
35で指摘した本人だけど、AppControllerのbeforeRenderから
$this->set('_serialize', true);
を削除する対応よりは、
_serialize変数が宣言されていなければ
$this->set('_serialize', []);
を設定するという対応のほうが良いと思うんだが。
RequestHandlerはviewの切り替え以外でも使われるわけで、RequestHandlerを
使うなという対応よりは、使われる前提での対応のほうが適切かと思う。
というか$this->set('_serialize', true)はクソ仕様。
public function beforeRender(Event $event)
{
$return = parent::beforeRender($event);
if (!array_key_exists('_serialize', $this->viewVars) &&
in_array($this->response->type(), ['application/json', 'application/xml'])
) {
$this->set('_serialize', []);
}
return $return;
}
311 :
>>307
ありがとうございます
4番ってどうやるのか教えていただけると助かります
313 = :
バージョン1.3です
ページネーションのメタタグ作りたいんだけど、
ページネーションヘルパーから次のページのURLを絶対パスで引数付きで取得する方法ってありませんか?
コントローラーでベタ書きして渡せば出来ないことはないんだけど、スマートな書き方ってありませんか?
314 = :
>>311
よりによってそれかよ
まあ、需要があるなら書くが・・・
1つめのクエリー
$hoge=$this->TableAs->find()->select(['col1','col2','col3'])->where(['col1'=>5]);
2つめのクエリー
$fuge=$hoge->select(['col1','col2']);
controller内でデータとして使うときは、
全件取得:$koge=$fuge->all();
最初の一件だけ取得:$koge=$fuge->first();
で実体化する
あとは、debug($koge);
で中身を表示・確認しながら好きなように使う
それと、 debug($fuge);でどんなクエリーが出来るてるかみたほうが良い
315 = :
何だかんだでアドベントカレンダー全部埋まってるよね
316 :
>>314
ありがとうございます
323 = :
暇つぶしでリリースしているのか?
328 :
いまどきFTPなんて欠陥プロトコルとそのクライアント使うなってことです
329 = :
まあそれしか使わせて貰えないサーバーもあるだろよ
無料レンサバとかさ
330 = :
>>327
zipであげて解凍
331 = :
>>327
Oven使ってインストールするってのはどう?
cookbookにも掲載されている方法です
332 :
【苫米地英人】 宇宙人の存在は明らか <世界教師 マイトLーヤ> ビリーバーって怖いわ 【上念司】
http://rosie.5ch.net/test/read.cgi/liveplus/1516240795/l50
333 = :
>>330
telnetすら使えない場合解凍のスクリプトがいるけどな
そのライブラリもなければお手上げ
334 = :
>>333
telnetて
335 = :
>>331
こんな便利なもんあったんだ
337 = :
>>336
$this->Form->input('hobby', array('options' => array(__('cooking'), __('sports'))));
は試したか?
339 = :
>>337
返事が遅くなってすみません。
それは試したのですが、配列すべてに__()を付けるのもどうかと思いまして・・・。
そういう方法しかないと言うなら納得します。もし他に方法があれば教えてください。
340 = :
>>339
foreachでムリクリ「__()」くっつける方法とか、
対訳テーブルをdb上に作っといて「__d('cooking','料理') , __d('sports','スポーツ')」って出力するとか
いまいちパッとしない
後者についてはdb使うから、foreachだけより遅くなるかも
とりあえず前者だけ書いとく
ふつうはTemplateに直書きせずに
Controller側
$ops=array();
$ops[]='cooking';
$ops[]='sports';
$this->set('ops',$ops);
Template側
echo $this->Form->input('hobby',$opt);
とかやるでしょ? そのときにこーゆー無茶をやる
341 = :
>>339
無茶の続き
Controller側
$ops=array();
$ops[]='cooking';
$ops[]='sports'; //ここまで上と同じ
$op1=array(); //新しい配列
foreach($ops as $key=>$op){ //$key に添え字、$opに内容が入る
$op1[$key]='__('.$op.')'; //文字列連結
}
$this->set('ops',$op1);
Template側(上と同じ)
echo $this->Form->input('hobby',$opt);
foreachは、配列が大きいと実行時負荷が半端じゃ無いけど、10ヶ前後ならナシでもないはず。
342 = :
>>339
文字列連結はこうかもしれん
$op1[$key]='__('.'''..$op..'''.')';
シングルクオーテーションの扱いも面倒だな
もっとスマートなやり方が考案できたら良いんだが、俺にはこれが精一杯
あとはqiita辺りをROMるほうがが吉かと
343 = :
>>342
あああ、また間違えた、書くならこっちだ
$op1[$key]='__('.'''.$op.'''.')';
344 = :
$keyじゃないな。たぶんこれでいけると思う
Controller側
$ops=array();
//ここからoption内容作成
$ops[]='cooking';
$ops[]='sports';
//ここまでoption内容作成
$op1=array(); //新しい配列
foreach($ops as $op){
$op1[$op]='__('.'''.$op.'''.')'; //文字列連結
}
$this->set('ops',$op1);
Template側
echo $this->Form->input('hobby',$opt);
$optの内容:['cooking'=>__('cooking'),'sports'=>__('sports')]
346 = :
Cake2.10からPHPUnitの5が使えるようになったって話だけど
まともに動かないまま放置されてる
2系ももう終わりなんですかね
347 = :
CakePHP 3.5.12 リリース
http://bakery.cakephp.org/2018/02/10/cakephp_3512_released.html
348 = :
>>347
バグフィックスしてくれるだけで十分だわ。当分使えるし
349 = :
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
みんなの評価 :
類似してるかもしれないスレッド
- 【PHP】フレームワーク CakePHP 11ホール目【v1.3】 (1001) - [96%] - 2011/6/30 22:32
- 【PHP】フレームワーク CakePHP 10ホール目【v1.3】 (1001) - [96%] - 2011/2/13 8:32
- 【PHP】フレームワーク CakePHP 9ホール目【v1.3】 (1001) - [96%] - 2010/11/1 2:53
- 【PHP】フレームワーク CakePHP 13ホール目【v2.0】 (995) - [95%] - 2012/4/23 21:16 ○
- 【PHP】フレームワーク CakePHP 15ホール目【v2.2】 (985) - [95%] - 2013/9/7 8:30
- 【PHP】フレームワーク CakePHP 17ホール目【v3α】 (955) - [95%] - 2016/11/15 20:45
- 【PHP】フレームワーク CakePHP 17ホール目【v2.4】 (984) - [95%] - 2015/1/10 2:45
- 【PHP】フレームワーク CakePHP 16ホール目【v2.4】 (1001) - [95%] - 2014/3/3 3:00
- 【PHP】フレームワーク CakePHP 14ホール目【v2.1】 (1001) - [95%] - 2012/12/3 19:16
- 【PHP】フレームワーク CakePHP 8ホール目【1.3】 (1001) - [93%] - 2010/7/22 22:16
- 【PHP】フレームワーク CakePHP 12ホール目【笑】 (1001) - [92%] - 2011/11/8 7:01
- 【PHP】フレームワーク CakePHP 5ホール目【v1.2】 (985) - [90%] - 2009/3/7 4:53 ☆
- 【PHP】フレームワーク CakePHP 7ホール目【v1.2】 (1001) - [90%] - 2010/3/18 1:18 ○
- 【PHP】フレームワーク CakePHP 4ホール目【v1.2】 (1001) - [90%] - 2008/12/19 21:06 ○
- 【PHP】フレームワーク CakePHP 6ホール目【v1.2】 (933) - [90%] - 2009/8/19 2:06 ○
- 【PHP】フレームワーク CakePHP 3ホール目【本命】 (1001) - [84%] - 2008/6/19 7:19 ○
トップメニューへ / →のくす牧場書庫について