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

    私的良スレ書庫

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

    元スレ【PHP】Laravel【フレームワーク】 Part.6

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    301 : nobodyさん - 2021/06/12(土) 05:03:09.94 ID:???.net (+5,+6,-28)
    >>300
    laravelのOSSかなりみて回ったけど、FormRequest使ってる奴らばかりだったぞ。その話は疑わしいのでソースを提示してくれ。
    302 : nobodyさん - 2021/06/12(土) 05:05:03.89 ID:???.net (+33,+29,-23)
    バッチがーて言ってるやつは、まず具体的にどんな処理を想定しているのか答えてくれ。
    303 : nobodyさん - 2021/06/12(土) 05:33:28.20 ID:???.net (+30,+29,-25)
    モデルにバリデーションルール書く場合で
    ユーザーのロールによってバリデーションルール変える必要があった時ってどんな書き方してるのか知りたい
    304 : nobodyさん - 2021/06/12(土) 07:00:44.62 ID:???.net (+43,+30,-171)
    間違った住所のままDBに登録される

    出荷バッチが働き間違った住所のまま伝票に印刷される ※1

    間違った住所の伝票が貼られたまま郵便局に持ち込まれる

    ご指定の住所に行き当たりませんでしたといって荷物が返ってくる

    商品がこないからキャンセルだと客から連絡が来る

    おまえらがバリデーションしないせいで月間300件の荷物が返ってくる
    1つ送るのに1050円だから1050*300=315000円の損失

    そして※1のところで伝票印刷アプリが「取り込みすら無理なデータだけど」ってエラー出すからバッチ処理が止まる
    データ修正してバッチを再投入
    だが、ほかにも間違ってる住所があるからまたやり直しっていうのを何度も繰り返す

    とにかく間違ったデータが入力されてしまうっていうのは損失として大きいんだよ
    305 : nobodyさん - 2021/06/12(土) 07:06:50.30 ID:HaomJXxh.net (+13,+14,-16)
    >>303
    Laravelで普通にできるだろ
    306 : nobodyさん - 2021/06/12(土) 07:06:56.41 ID:???.net (+33,+29,-56)
    >>304
    うん?バッチってDBから一覧を抽出するバッチの話なの?バリデーションは何の関係があるの?そんなの登録画面でバリデーションすれば良いだけでしょ?
    307 : nobodyさん - 2021/06/12(土) 07:22:55.34 ID:???.net (+38,+29,-17)
    >>302
    バリデーションが必要なデータを追加するバッチだよ
    それを聞いてとうするんだよ
    308 : nobodyさん - 2021/06/12(土) 07:48:40.82 ID:???.net (+43,+30,-147)
    >>307
    具体的にて書いたはずなんだが。モデルで書けっていってるやつの主張が意味不明だから。

    まず、画面で入力と同じ操作をバッチでもやるって前提が理解できない。

    俺の経験上、大体のデータは親子関係にあって、入力する画面は分かれている、バッチだとそれらをまとめて投入するから画面とバッチではバリデーションのルールは異なる。

    更に、そんなバッチ自体稀だから、わざわざそのためだけにLaravelの標準を無視してモデルに書くって発想が理解不能。
    309 : nobodyさん - 2021/06/12(土) 07:56:05.02 ID:???.net (+36,+29,-43)
    モデルに書くのに違和感あるって人はLaravelしかフレームワーク触ったことない人なの?
    煽りじゃなくて純粋な疑問
    310 : nobodyさん - 2021/06/12(土) 07:56:31.89 ID:???.net (+27,+29,-42)
    そもそもバッチにパラメータなんて基本ないからな
    デイリーだとその日が分かればいいだけだし
    特殊なバッチのようなものならそもそも管理画面でパラメータ入れて実行やろ
    311 : nobodyさん - 2021/06/12(土) 08:02:54.84 ID:???.net (+33,+29,-42)
    >>309
    処理の流れからして先にバリデーションするやろ
    モデルでするとかそもそも考え方が異常やろ
    複数のモデルを使う時、2個目のモデルに投入するまでそこで使うパラメータはエラーが分からんの?w
    バカバカし過ぎる
    312 : nobodyさん - 2021/06/12(土) 08:03:47.75 ID:???.net (+21,+8,-86)
    >>309
    モデルにバリデーションがあるほうがMVCの原則としてはおかしいのだよ。上でも書いたけど、モデルにバリデーションてのは、Active Record由来。
    だから、モデルでのバリデーションに違和感持たない人は、Rails以降のなんちゃってMVCフレームワークしか知らないって理解。
    313 : nobodyさん - 2021/06/12(土) 08:22:52.49 ID:???.net (+44,+29,-86)
    >>308
    どこまで具体的に要るんだ?実際のコード貼れってか?ちょっとそれは今すぐできないんだが
    例えば最近やったのでは、1日1回他社がS3に置いたcsvデータを取り込んで、テーブルにレコード追加するバッチ
    requiredやuniqueやdateなど普通にバリデーションが必要でバリデーションしたよ
    この程度の例も思い付かないなんてどんだけ経験値低いんだよ
    314 : nobodyさん - 2021/06/12(土) 08:26:48.44 ID:???.net (+42,+29,-73)
    >>313
    経験値ではなくて規模の話だね。そこそこ正規化されたデータしか扱ったことないんで。

    あとそれがどれぐらいあんの?画面10あって、そんなのが1、2程度なら、わざわさモデルでバリデーションするようアーキテクチャを変更するのはアホだってことぐらいは、理解してくれるよね?
    315 : nobodyさん - 2021/06/12(土) 08:33:20.84 ID:???.net (+35,+29,-23)
    >>312
    その辺は一応浅く理解してるけどコントローラーにもリクエストにも書きたくない場合モデルしかなくね?と思った
    Cakeでもモデルに書いてたし
    他にもっといい場所あったら知りたい
    316 : nobodyさん - 2021/06/12(土) 08:49:11.01 ID:???.net (+44,+30,-126)
    >>314
    確かにうちは小規模案件が多い、その意味では俺も経験値足りてないが

    もちろん不必要な所まで変えなくてもいんじゃね?俺もRequestのバリデーション使うことはある
    ただそれだとバッチの時に不便だから、うちではモデルに書いたバリデーションメソッドを、
    Webの場合はコントローラー、バッチの場合はコマンドから呼び出すという実装が多い
    だから>>257のページみたいにリクエストクラスでやるのがベストプラクティス!と言いきられるとモヤモヤする
    317 : nobodyさん - 2021/06/12(土) 09:04:00.24 ID:???.net (+27,+29,-19)
    週末に気持ち悪い奴らだな
    みんな可愛い彼女連れて楽しく過ごしてるのにバリデーションごときに熱くなって悲しくならんの?
    318 : nobodyさん - 2021/06/12(土) 09:09:31.93 ID:???.net (+38,+29,-144)
    考え方違くね?
    モデルに入るデータをバリデーションするんじゃなくてS3にあるCSVデータが正しいフォーマットかをバリデーションするんじゃないの?

    後laravelしか触ってないからモデルに書く事に違和感があるんじゃなく
    laravelがリクエストでバリデーションする機能を提供してるからその方針を尊重してるってだけ
    使ってるフレームワークがビューテンプレートに書くって方針ならそうするよ
    自分のやりやすいを優先して得られるものなんてないでしょ
    319 : nobodyさん - 2021/06/12(土) 09:12:38.72 ID:???.net (+38,+29,-67)
    >>304
    間違った住所のままDBに登録される

    出荷バッチが働き間違った住所のまま伝票に印刷される ※1

    バッチ動く前に「間違った住所のままDBに登録される」って書いてあるけど、そこでバリデーションが必要じゃん
    320 : nobodyさん - 2021/06/12(土) 09:17:14.51 ID:???.net (+31,+29,-58)
    >>315
    cakePHPはRailsを真似たフレームワークの代表みたいなもんだから、例としては不適切。
    321 : nobodyさん - 2021/06/12(土) 09:18:38.00 ID:???.net (+38,+29,-22)
    >>316
    バッチもあるやつだけ、モデルにバリデーションを移しているの?それはそれで大変そうな・・・
    322 : nobodyさん - 2021/06/12(土) 09:20:50.82 ID:???.net (+38,+30,-93)
    >>318
    そうそう、フレームワークの標準にのることが大事。それを無視して俺流をはじめちゃうと、オレオレフレームワークの亜種になってしまう。
    その結果、新規に参画するエンジニアや引き継ぐ場合の学習コストが跳ね上がったり、メンテできなくて匙を投げられるみたいなことが起きる。
    323 : nobodyさん - 2021/06/12(土) 09:34:05.89 ID:???.net (+33,+30,-120)
    >> 322
    基本的に面倒くさがりだから独自ルールで書いたらどんなルールかをドキュメントに残さないと引き継げないけど
    フレームワークの標準に合わせとけば引き続ぎはフレームワークの作法でやってるのでよろしくで終わる
    理解できないって話ならそれは本人の技量であってドキュメントを残してないこっちのせいじゃないって突っぱねられる
    324 : nobodyさん - 2021/06/12(土) 09:58:26.28 ID:???.net (+33,+30,-108)
    めんどくさいからちょっとまとめてやるわ
    バリデーションて言っても厳密には2種類ある
    ・フォームから送信されたデータのバリデーション
    ・DBに保存するデータのバリデーション
    例を挙げると長くなるので省略する
    前者はリクエストで、後者はモデルで担当するのが正解だが
    シンプルな要件ではこの2種類が同じになることも多く、その場合はどこに書くか議論の余地が出て来る
    325 : nobodyさん - 2021/06/12(土) 10:02:25.63 ID:???.net (+22,+29,+0)
    まとめなくていい
    スルー耐性つけろ
    327 : nobodyさん - 2021/06/12(土) 10:07:15.93 ID:???.net (+27,+29,-33)
    バッチ処理に向く、向かないって言ってる意味がよく分からん
    要は正しいデータ登録できるかできないかって話だよね?
    バリデーションの機能そのものの話だよな
    328 : nobodyさん - 2021/06/12(土) 10:07:22.63 ID:???.net (+27,+29,-34)
    モデルでバリデーションするって言ってる奴は.envをコミットするって言ってるやつと同一人物だろw
    329 : nobodyさん - 2021/06/12(土) 10:10:54.19 ID:???.net (+27,+29,-4)
    スレの総意としてはどっちでもいいだろ
    330 : nobodyさん - 2021/06/12(土) 10:16:45.06 ID:???.net (+27,+29,-3)
    なんでスルーするんだ?
    有益な話だと思うけど
    331 : nobodyさん - 2021/06/12(土) 10:34:11.31 ID:???.net (+38,+29,-3)
    >>321
    じゃあそういう時他にどうすればいいの?
    332 : nobodyさん - 2021/06/12(土) 11:23:04.15 ID:???.net (+27,+29,-17)
    異常値は入力時に弾いてDBに入れないのがシステム屋さんの考え方。WEB屋さんはDBにも異常値があるものを作るようだ
    333 : nobodyさん - 2021/06/12(土) 11:31:37.43 ID:???.net (-21,-29,-52)
    俺のところはlocalhostからしかアクセスできないバッチ用コントローラを配置して
    そいつに対して他社システムが配置したCSVから読み込んだデータをPOSTしてるな
    だからFormRequestは普通にバッチで使えてたな
    334 : nobodyさん - 2021/06/12(土) 11:33:22.83 ID:???.net (+37,+29,-45)
    >>331
    それぞれでバリデーション書け。理由は、ユースケースが異なるから。結果的に今は同じだからって共通化しようとするのは、経験の浅いエンジニアが犯しやすい過ち。
    335 : nobodyさん - 2021/06/12(土) 11:40:55.95 ID:???.net (+34,+26,-13)
    >>334
    それLaravelではアンチパターンだよ
    336 : nobodyさん - 2021/06/12(土) 11:41:08.06 ID:???.net (+33,+30,-103)
    バッチからとフォームからでルールが異なるってレアケースだし、共通化できる部分はすべきだと思う
    あちこちに分散して書くと非常にバグの基になりやすい
    それぞれの担当者が別で開発終盤の忙しい時に仕様が変わって片方にしかちゃんと伝わらないとか、超ありがち
    337 : nobodyさん - 2021/06/12(土) 11:44:42.08 ID:???.net (+25,+29,-4)
    >>333
    それはそれで苦肉の策って感じで嫌だな
    絶対駄目でもないけど
    338 : nobodyさん - 2021/06/12(土) 12:16:55.27 ID:???.net (+28,+29,-69)
    あらゆるインプットにはバリデーションが必要で、特定のインプット方法にしか使えない形でバリデーションを実装するのはどうなの?っていうだけなんだが。

    特定のケースならバリデーションはいらない、っていうのはむしろ例外だから考慮しなくていい。
    339 : nobodyさん - 2021/06/12(土) 12:25:37.45 ID:???.net (+32,+29,-15)
    >>335
    勝手にLaravelのアンチパターンとか言い出して何様www
    340 : nobodyさん - 2021/06/12(土) 12:29:45.84 ID:???.net (-22,-29,-43)
    >>338
    Laravelベースの人気OSSも一通り調べてみたけど、ユースケースごとにバリデーションは分けて定義している。例えば同じuserモデルに対する処理でも、登録と更新ではFormRequestを分けて用意している。
    341 : nobodyさん - 2021/06/12(土) 12:51:16.37 ID:???.net (-3,-30,-92)
    >>338
    ログインIDが登録可能な3種類のrouteがあったとして
    1. /users
    2. /manager/users
    3. /file/users
    1は半角英数10文字まで
    2半角英数10文字で先頭にmgr_が必要
    3はアップロードされたファイルに書かれている文字半角英数10文字まで
    これをどういう形でバリデーション実装するの?
    342 : nobodyさん - 2021/06/12(土) 13:03:45.28 ID:???.net (+19,+23,-1)
    >>341
    設計が悪いと思わんのかw
    343 : nobodyさん - 2021/06/12(土) 13:07:54.18 ID:???.net (+30,+27,-45)
    もうLaravelも9が出るというのに未だにFormRequests使ってるやつが居て草
    バッチ処理のこと何にも考えてないんだろうね
    344 : nobodyさん - 2021/06/12(土) 13:08:43.28 ID:???.net (+32,+29,-32)
    やっぱRails使いたちのほうが圧倒的にレベル高いわ
    Laravel使ってる奴らやべえな
    345 : nobodyさん - 2021/06/12(土) 13:15:55.81 ID:???.net (+32,+29,-2)
    >>344
    そんな化石使ってるやつのほうがヤバいからw
    346 : nobodyさん - 2021/06/12(土) 13:19:21.91 ID:???.net (+32,+29,-10)
    >>343
    バッチ処理でバリデーションとかまじで笑えるwww
    お前開発したことないやろ?w
    347 : nobodyさん - 2021/06/12(土) 13:27:47.73 ID:???.net (-27,-30,-170)
    .envと.env.backupが.gitignoreで除外されてるけど
    .env.helloとかは問題なく追加できる

    これってLaravelの思想としては初期の.envや.env.backupを管理対象にしてないのは
    初心者に対する配慮の上でのことですよね?
    devenvの仕組み上.env.aとか作れるので自分で管理しろって意味ですよね?
    348 : nobodyさん - 2021/06/12(土) 13:34:09.52 ID:???.net (+30,+29,+0)
    >>341
    設計が悪い 以上この話はもう終わり
    349 : nobodyさん - 2021/06/12(土) 13:35:21.15 ID:???.net (+36,+29,-18)
    そもそもバッチ処理ってのが何を言ってるかよく分からん
    バッチ処理云々言ってるやつは、
    まずはバッチ処理そのものについてまずは説明してほしいわ
    バリデーション云々の話はまずは置いといて良い
    350 : nobodyさん - 2021/06/12(土) 13:37:17.78 ID:???.net (+26,+29,-19)
    >>341
    そんなシステムはおかしいのでこの場合のバリデーションを考えるのは時間の無駄です
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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