X



【PHP】Laravel【フレームワーク】 Part.5

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 3ead-ksEv)
垢版 |
2021/04/15(木) 18:49:01.96ID:fbr++Lxb0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

Laravel
ウェブ職人のためのPHPフレームワーク

本家
https://laravel.com/

git
https://github.com/laravel

動画チュートリアル(英語)
https://laracasts.com/

日本語
http://laravel.jp/

※前スレ
【PHP】Laravel【フレームワーク】 Part.4
https://medaka.5ch.net/test/read.cgi/php/1613209188/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0067デフォルトの名無しさん (ワッチョイ 56bb-qaF0)
垢版 |
2022/07/31(日) 16:34:01.03ID:FuqqV1bj0
>>65
違いましたか。失礼
この記事、マサカリ(?)がそこそこ飛んできていて、その中のいくつかを、提案いただいた内容と勝手に結びつけてしまいました

納得行くものはなかなかないですねぇ
困った笑
0068デフォルトの名無しさん (ワッチョイ 56bb-qaF0)
垢版 |
2022/07/31(日) 16:36:23.57ID:FuqqV1bj0
>>66
せっかくのRDBなので物理削除したくなるのはわかりますが、今どき「退会即物理削除」は無理だと思います
今回は論理削除は必須条件なので、もし条件に合う設計案があれば教えて下さい
006966 (ワッチョイ cd2c-Og+R)
垢版 |
2022/07/31(日) 17:50:56.77ID:3aGOnqYZ0
論理削除は、広範囲に他の検索条件にも影響が及ぶ。
それが難しい

普通に削除して、別の削除済み用のテーブルへ追加しておけば?

そうすれば、他の検索条件には影響が及ばない
007066 (ワッチョイ cd2c-Og+R)
垢版 |
2022/07/31(日) 17:55:25.35ID:3aGOnqYZ0
「検索条件 AND 削除フラグがFalse」とか、
すべての検索条件において、一々削除フラグを考慮するのが面倒

こういうシステムは保守できない
0071デフォルトの名無しさん (ワッチョイ 56bb-qaF0)
垢版 |
2022/07/31(日) 18:50:53.91ID:FuqqV1bj0
> 普通に削除して、別の削除済み用のテーブルへ追加しておけば?

こちらができるのであれば、論理削除の影響範囲は洗い出せた状態なのであまり分離するメリットは無いように思います

> すべての検索条件において、一々削除フラグを考慮するのが面倒

Laravelだとデフォルトがそういう仕組みになっています
仕組み自体はそれほど難しいものではないのでRailsでも実装されてそうですけど
007366 (ワッチョイ cd2c-Og+R)
垢版 |
2022/07/31(日) 19:42:47.32ID:3aGOnqYZ0
例えば、Rails では単一テーブル継承という機能がある

顧客が自宅と勤務先を持つ場合に、
自宅と勤務先の列は、大体同じものであるため、

自宅と勤務先を、住所という同じテーブルから派生させて、
Railsが裏側で、自宅と勤務先を切り替える機能

自宅 < 住所
勤務先 < 住所

type=自宅とか、type=勤務先などの検索条件を、SQLに入れなくて良い
0074デフォルトの名無しさん (ワッチョイ d610-0/V6)
垢版 |
2022/07/31(日) 22:04:43.70ID:v0RslAdr0
>>70
削除フラグじゃないけど、俺はそうしてるわ
会員の有効・無効とか、記事の表示・非表示とか。
別テーブルにして有効か調べてから
データ抽出するよりも明らかにパフォーマンスは良い

>>73
WordPressでもその設計だけど、アンチパターンだよな
といいつつ、同じ設計を採用する場合も多々あるけどw
0075デフォルトの名無しさん (ワッチョイ 56bb-qaF0)
垢版 |
2022/07/31(日) 22:36:19.31ID:FuqqV1bj0
>>73
コメントの趣旨がわからなかったのですが、どこで単一テーブル継承を使用すると良いということだったのでしょうか?
あとそれはLaravelで実装できるものなのでしょうか?
0076デフォルトの名無しさん (ワッチョイ 56bb-qaF0)
垢版 |
2022/07/31(日) 22:39:18.52ID:FuqqV1bj0
>>74
有効・無効/表示・非表示をそれぞれ別テーブルに充てているということでしょうか?
あまり大規模な構築はやっていないので、冗長に思えます。

パフォーマンスに言及されていますが、どの部分(あるいはどの程度)でパフォーマンスに差が出ます?
ぜひ教えて下さい。指標の参考がほしいです
007766 (ワッチョイ cd2c-Og+R)
垢版 |
2022/07/31(日) 23:55:57.10ID:3aGOnqYZ0
>>75
Rails にも、単一テーブル継承といって、
フラグをRailsが裏側で、切り替えてくれる機能があるというだけの話

削除フラグとは関係ないけど
0078デフォルトの名無しさん (ワッチョイ 56bb-qaF0)
垢版 |
2022/08/01(月) 07:23:42.23ID:C2cXNFwd0
>>77
> 仕組み自体はそれほど難しいものではないのでRailsでも実装されてそうですけど

こちらに対してのコメントだったのですね
理解できました
*スレチな話題に誘導してしまい申し訳ありませんでした

回答、ありがとうございます
0079デフォルトの名無しさん (ワッチョイ 56bb-qaF0)
垢版 |
2022/08/02(火) 20:08:15.57ID:aTV235290
>>78
ソフトデリートのdeleted_atとmailの複合ユニークだとダメですね
DBとしては重複登録できてしまう

>>57 の退会回数とmailの複合ユニークがDBとしては正なんですかね
(0がアクティブってのが嫌なんですよねぇ)

もう少し悩んでみます
0081デフォルトの名無しさん (JP 0H0b-s6Hz)
垢版 |
2022/08/06(土) 14:06:30.02ID:wAL6zxMSH
上でnullはユニークとして扱われるって説明をしているのに、よく分からないの一言で終わってるやつ、一生エンジニアとして半人前のままで終わりそう
0083デフォルトの名無しさん (スッププ Sd33-N11w)
垢版 |
2022/08/06(土) 15:45:44.43ID:ZR5VDRAGd
>>59
これ見た感じ削除したものを復元する前提で考えるあたりマジでバッドノウハウだな
0085デフォルトの名無しさん (JP 0H0b-s6Hz)
垢版 |
2022/08/06(土) 16:38:51.56ID:wAL6zxMSH
>>82
SQLアンチパターンをちゃんと読もうな
どんなものにでもそれが必要なケースは必ずある
問題は、論理削除のように使うことで副作用を生み出してしまう設計を、
他に手段がある中でも思考停止で使ってしまうことにある
008663 (ワッチョイ ebbb-XGW1)
垢版 |
2022/08/07(日) 07:03:33.84ID:njdSVAOC0
>>81
そこは理解できました
頂いたコメントのおかげで、deleted_atとmailの複合ユニークを NULLS NOT DISTINCT のオプション設定できればイケそうと判断しましたが、調査調査の結果、MySQLだとダメっぽいのであきらめました。PostgreSQLならイケたかもしれません

理解できなかったのは

> フラグってのはbool型を意味する
> 一般的に論理削除フラグと主キーの組み合わせでユニークチェックする場合、論理削除フラグにはnullを設定する

boolなのにnullをフラグとして利用する前提???
かなり混乱して未だに理解できません

今は判定用のカラムを作る方向を模索しています
https://yaba-blog.com/laravel-softdelete-unique/
https://qiita.com/taruhachi/items/bb78d92efa67b6936201

良い案があればご教示ください
0090デフォルトの名無しさん (スッップ Sd22-Ickp)
垢版 |
2022/08/31(水) 18:10:35.97ID:FlEWiE9hd
PHP9では未定義変数はNGになるんだってな
0091デフォルトの名無しさん (ワッチョイ c27c-yNcK)
垢版 |
2022/08/31(水) 18:22:26.10ID:Vvk0HldG0
今でも未定義変数のまま利用するというケースが無かったし
厳密にエラーになるならそれはそれで良いかと思う
typoとかで分からなかったりする場合もあるだろうから歓迎かと
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況