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

    元スレ【PHP】フレームワーク CakePHP 19ホール目【v3.3】

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

    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 = :

    >>308

    >>35で指摘されてた仕様バグか。

    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を超えております。
    『憲法改正国民投票法』、でググってみてください。国会の発議は
    すでに可能です。平和は勝ち取るものです。お願い致します。☆☆


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

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


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