【PHP】Laravel【フレームワーク】 Part.7
Laravelでの排他処理の実装方法
・サーバのディレクトリに「lock」というディレクトリを作成する。
・ディレクトリ作成に成功したらロック取得、失敗したら他のユーザーがロック中と判断する。 すいません、前スレにも投稿した者です
教えてください
Laravelを使ってauto_incrementに欠番を出さないようにするにはどうしたらできますか?
例えばユーザーテーブルに新しく挿入してidが100のユーザーが作れますがそのユーザーを消してもう一度挿入するとidが100じゃなくて101になってしまって困ってます >>4
ちょっと難しいですね
auto_incrementを諦めて自前で実装しましょう
詳しくは前スレでid真っ赤にしてた詳しそうなおじさんに聞くといいと思います >>4
100に戻せばいい
戻し方はDBMSの実装依存 おまえらやっぱり前スレの流れを理解してなかったな
auto_incrementの初期値、増分、現在値は自由に変更できる
問題はそこじゃない >>4て、いつも初心者のフリして変な質問投稿する荒らしでしょ?スルーで良いと思うんだけど。 >>4
前スレの英雄、幻の大手勤務さんなら分かるかも Laravelユーザーって、ここまで低レベルだったのか。 >>4
1. Illuminate\Session\Middleware\StartSession を継承するミドルウェアを作る
2. 1. のクラスで handle() をオーバーライドする。中身はとりあえず継承元と全く同じ。
3. 2. にメソッド内の $this->saveSession($request); に注目する。
4. 3. の実行に条件をつける。
5. if (Route::current()->getName() === 'login') { $this->saveSession($request); } みたいな。
6. App\Http\Kernel から \Illuminate\Session\Middleware\StartSession::class を消す
7. 消した箇所に 1. で作ったミドルウェアのクラス名を入れる。
以上
多分動くと思う
動かしてないけど >>15
サボりやね。てか結果出してりゃ問題無いって会社だから、サボりというのも語弊があるかもしらん。 >>15
私はもちろんサボりです
実装に行き詰まったときに5chを観る…タバコ休憩と同じですよ😊 排他処理を知らないLaravelerちょーウケるw >>4
欠番出てもいいじゃん!!!
って考えたら楽になるよ >>19
7を100回読んだら?
問題なのは、排他処理を全く理解できてない事だよ。 DBのテーブル追加したら
モデルクラス必ず作らなければならないんですか?
モデルクラスの属性変数をいちいち作成するのが
めんどくさいです。
DB設計書でやたら列の数が多いし
1つ1つの列名がやたら長いので苦行です
テーブルの数もやたら多いです Ruby on Rails, Laravel など、各フレームワークのスレは、
この板ではなくて、WEB プログラミング板じゃないの?
この板は、プログラミング言語だけでしょ? laravel8インストールしたんですけど、bootstrap入ってないですか?
中身見るとbootstrap入ってるみたいなんですが。。 >>24
何のbootstrapのこと言ってるのか知らんがjs/cssライブラリのbootstrapのことなら入ってないよ すみません、初心者なんですがわからないので教えてください。
windows10にてComposerのwindows版をインストールし、Laravelをインスコ
したのですが(公式文章のInstallation Via Composerを参照しました)
laravel newをすると
[RuntimeException]
php: does not exist and could not be created.
と出力され、プロジェクトの生成が完了しません。
Composerのインストール時に生成してくれるPHP.iniを用いても一緒でした。
どなたかお心当たりあれば教えていただけないでしょうか?
よろしくお願いいたします。 ちなみにlaravel newの実行結果全体はこんな感じ
phpは7.4.21を使っています。
パーミッションも問題はありませんでした。(フルアクセス可能)
_ _
| | | |
| | __ _ _ __ __ ___ _____| |
| | / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V / __/ |
|______\__,_|_| \__,_| \_/ \___|_|
Creating a "laravel/laravel" project at "./test1"
Installing laravel/laravel (v8.5.22)
- Installing laravel/laravel (v8.5.22): Extracting archive
[RuntimeException]
php: does not exist and could not be created. >>23
にも書いたけど、フレームワークのスレは、WEB プログラミング板じゃないの?
この板で、答える人はいないかも >>26
権限の問題っぽい気がするけど、ここらへん試すとどうなるんだろ
・先にvendorフォルダを作ってから試す
・他のディレクトリで試す
・管理者権限でターミナルを起動して試す
・書き込みコマンドが動作するか試す echo 1 > test.txt >>29
早速レスくれてありがとう
Venderフォルダを先に作るのはやってないからやってみるわ
ただ他の項目は試したけど同じように失敗するし、コマンドは動いたのよね >>29
早速レスくれてありがとう
Venderフォルダを先に作るのはやってないからやってみるわ
ただ他の項目は試したけど同じように失敗するし、コマンドは動いたのよね phpのバージョンを7.3に下ろしたら動きました
お邪魔しました... php artisan serveで内蔵サーバーを立ち上げても20秒後にエラーも無く自動で停止するんですが何故ですか?
停止する前に急いでアドレスにアクセスするとserver.phpが開けないというエラーで停止します。
laravel 8.54.0
mysql 8.0.26 すみません自己解決しました
avastが原因でした Laravelの学習を始めた者です。
マイグレーションとEroquentの存在意義がわかりません。
両者とも、使えばそれなりのメリットがあるかもしれないけど、使わなくてもいいんですよね。
Eroquentを使わずSQLを直書きすれば済みそうだしそのほうが分かりやすい。
マイグレーションだって、DBの管理アプリを使ってテーブル設計すればそれで済む。
逆に、それらを使うと、そのシステムを担当するメンバーが代わったときコードの品質を維持できなくなりそう。
(コードのメンテの際、マイグレーションやEroquentの理解が必要となるため)
上記の認識は間違っており、だからこそマイグレーションやEroquentが存在すると思うので、
何が間違っているのか、教えてください。 >>36
もちろん、フレームワークとしてそれらを使うことが強制されているわけではないよ。
EloquntやMigrationに限った話ではなく一般論として書くけど、
それぞれの方法のメリットとデメリットを正確に洗い出しせているか、洗い出した上でプロジェクトのチームとしてその選択をしたのならそれに従えば良い。
肝心なのはプロジェクトごとにルールが明確で全員がそれに従うこと。
ある人はEloquentのクエリビルダを使うが、ある人はSQLを直書きする。なんてことが無いように。
しかし、それらを使わない理由が「コードのメンテの際、マイグレーションやEroquentの理解が必要となるため」だけなら、理由としては弱いと思う。
ある別のメンバーがそれらを理解できずにコードの品質が落ちる、という理屈が通るなら、
「○○の機能を使うと、新しいメンバーが参加する障壁となるから、もっと原始的な仕組みにしよう。原始的な△△なら誰でも理解している」は全てに言えてキリがなくなってしまわないだろうか。
例えば、
・Eloquentは理解に時間がかかるから使用NG
・Migrationも同じく駄目
・FormRequestも使わずにコントローラーにバリデーションのコードを書けば誰もが理解できる
・Moddlewareも使わずに全てのコントローラーの開始と終わりに必要なコードを書けばその処理に気づかない人はいないはず
・Helperも使わずに都度phpの標準関数を組み合わせて書けばいちいちLaravelのヘルパを知る必要は無い
・Observerは使わずにレコードの書き換えを行う全てのメソッドで必要な処理を書くべき
・36の言う「DBの管理アプリは良い」は○○だから使うべき
それらの基準を明確してからルールを決めて、それが適切なのかを他のメンバーから客観的な評価をもらうべき。 >>38
レスありがとう。遅くなってスマン。
一般論として書くけどって書いてくれたように、一般論というか抽象論になってしまって、お聞きしたかった
論点がぼやけてしまいました。書いてくれたことはその通りだと思うんだけど。
マイグレーションやEroquentを、自分が参加するプロジェクトで採用してよかったor悪かった、など実体験の話があれば教えてください。
机上論ではなく自らの経験に基づく生々しい話だとうれCです。 初歩的な内容かも知れないけど教えてもらえると有難いです。
Windows上で LiveWire 入れて簡単なコード書いて動いた。
内容はネット上でみかけた、ボタンをポチすると数字がカウントアップするヤツ。
それをサーバ上で動かすと動かない。
あと、@livewireAssets だとなぜか展開してくれない。
とりあえず @livewireStyles + @livewireScripts 入れてる。
サーバはさくらインターネットとCPIでやってみた。
ブラウザのソースを比較してみてもTokenが違う程度で違いはない。
分かっている人には簡単な話なんだろうとは思うけど、ご教授頂けると有難いです。 Eloqent使うと管理が楽になるかと言うとそれだ気じゃないんだよな
プログラムやSQLをベタ書きなら
管理は大変だけど地道に処理を追っていけば通常のプログラミング
スキルで処理が理解出来る、泥臭くゴリ押せば自由にプログラミングできるけど
フレームワークのEloqentやヘルパーなどを使いまくっ待てると
「Laravelをじっくり勉強しまくって熟達していれば管理が楽」
or
「Laravelに詳しくない人間が見たらなんの意味があるか全く分からない」の両極端になってとても管理が楽とかそういうレベルではなくなる処理の繋がりが暗黙化されていてどうやって処理を追えばいいか手も足も出せなくなる
そしてフレワがLaravelでなくなったらまるで利用出来ない知識になちゃう
app開発はLaravelの為にやる訳では無いのであって
とりあえずゴリ押しで解決したい、取り敢えず形だけでも完成させたいって時にそういう余計な機能は全部邪魔になるんだよ
bladeのCSRF防止機能しかり
新人に仕事投げて1画面くらい完成してると思ったら
この機能のせいでこれっぽっちも進捗してないとか
プロジェクトのブレーキになるよな
新人にSQLやHTML教えるのさえ大変なのに
Laravelの細かな仕様まで自分さえ完璧に勉強してる訳でもないのに
他人にまで説明してる暇なんてないよ なんで新人に教えるんだよ
新人は自分で学習するものだろ >>42
私Laravelをほとんど使ったことがない超初心者ですけど、概ね同意見で安心しました。
EloqentでSQLをラップするメリットって何かあるんでしょうか?
SQL直書きなら、覚えやすいし、デバッグ等もやりやすいし、技術をLaravel以外にも使えるし。
Eloqentを覚えても結局はSQLを理解していないと使いこなせないような気がします。
SQLだと、数十行の複雑な文になっってしまう場合があり、それはSQLの良くない部分だと
思うけど、Eloqentなら理解しやすく書けるんでしょうか。
(長いSQLはストアド使えとか分割しろとか言われそうですが、そうできない場合もあるのです) ×Eloqent
◯Eloquent
Eloquent使ってるとDBをMySQLからポスグレにソース変更なしで変えられるとかそういうメリットか 俺は逆にSQL直書きしたくない&させたくないのでエロクエント使ってるわ
その辺は各自仕事のやり方とか好みなんじゃないの、そもそもフレームワーク使うかも含めて 言うほどSQLの文法に学習コストあるか?
EloquentのクエリビルダなんてSQL文法の理解は大前提で、その上で簡潔に書く為のツールであって、SQLを学習せずに済むためのツールではないだろw 生成したSQLを文字列として戻せ
そのまま実行するな
強いていえば値をバインド前の変数を埋め込んだ状態の
文字列もよこせ
ユーザーが真に求めてるのはそれ バックエンド・フレームワークは、板違い!
この板ではなく、WebProg 板の方にある
【PHP】Laravel【フレームワーク】 Part.8
https://medaka.5ch.net/test/read.cgi/php/1625721320/l50 なぜwebを差別する?
今やいちばん主流要素で設計、実装難易度共に高いのに
簡単なPHPでホムペ作ってた時代とちゃうねんで Usersテーブルではなく、Oracleの既存の「OP_MST」という既存テーブルをログインの認証に
使いたいと思っています。
テーブルに接続するといったことは出来ましたが、ログインの認証画面のところの
処理がどうしても分からないのです。
Usersテーブルのpasswordに相当するのは、カラム(OP_PW VARCHAR2(10) NOT NULL)
ですが、これは暗号化されていない平文なので、
「OP_MST」のモデルで、getAuthPasswordでop_pwをreturnするようなことも出来ない
どうしたらいいものかアドバイスいただけないでしょうか。 スレ立てるまでもない質問はここで 158匹目
https://mevius.5ch.net/test/read.cgi/tech/1635193843/538
ここに、YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースの内容を書いておいた
基本的に、Rails以外のフレームワークは、シェアが少ないのでおすすめしない。
学習環境も揃わないので、無理
Railsでは、Railsチュートリアル・Railsガイド・
黒田努の3冊の本・パーフェクト Ruby on Rails・Ruby on Rails 6 エンジニア養成読本とか、
Rubyでは、改訂2版 パーフェクトRuby・改訂2版 Ruby逆引きハンドブックなどの教科書が揃っている
これほど、良い教科書が揃っているフレームワークはない!
Laravel のシェアは少しあるけど、KENTAがPHP は一生やる必要がないと言ったので、
PHP自体がオワコンになってしまったw
日本のウェブ開発の将来は、ほぼKENTAが決めている。
Scala を滅ぼしたのも、KENTA 俺もLaravel自体は使いやすいけど、8以降のLivewireやJetstreamあたりがよくわからない
一時期いじってたけどピンと来なかったし今後潰しも効かなさそうなので追わないことにした 2000年代に逆戻りしたようなLivewireなんかありがたがる必要ないよ。 9で、メールでのotpやりたいのに全部google2faなんだな
fortifyですらそうっぽい
google2faはスマホ依存だから要件合わないんだよなあ、機種変更のときの説明もしなきゃならんくなるし
結局自前か・・ マジか
俺もあれ嫌い
ログインするたびにいちいちスマホ探したりして、PCで完結できないのホントストレス
Laravelって高機能だけど結局痒い所に手が届かないから自作、となってなかなか楽ができないな spring bootが最強だよ
javaでもkotlinでも使えるし Laravel9で質問です
あるModelからMySQLのdatetime型である、
「created_at」「updated_at」、それと「issue_date」というカラムを含むデータを取得しました。
しかし、それをcontrollerからreturnする前にjson_encodeなどで確認すると、
前者2つは
「"2022-05-30T06:57:27.000000Z"」
後者は
「"2022-05-30 00:00:00"」
と、型(フォーマット)が異なるような値になっていました。
「created_at」「updated_at」の型(?)を変換しない方法はありますでしょうか。
可能ならModel内で出来ればいいなと思っています。 Laravel自体は嫌いじゃないんだがEloquentがあまりに前時代的すぎる 寧ろTableとEntityが別クラスの方がイチイチめんどい このスレは板違い!
Ruby on Rails などと同じで、WEBプログラミング板でやれば? webprogはID付かないからめちゃくちゃになる