[過去ログ]
【PHP】下らねぇ質問はここに書き込みやがれ 11 (1002レス)
【PHP】下らねぇ質問はここに書き込みやがれ 11 http://mevius.5ch.net/test/read.cgi/tech/1591334726/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
835: デフォルトの名無しさん (ワッチョイ 427c-IMun) [sage] 2021/03/17(水) 22:32:17 ID:W80ESG/m0 >>832 ある意味慣れみたいなものだと思う。取りあえずLaravelの話をするけど まずはルートを定義するroutes/web.phpみたいなファイル ここにどういうURLでアクセスされたらどのコントローラを呼ぶかと定義する 実際に特定のURLがアクセスされると定義されているコントローラを呼ぶ コントローラはapp/Http/Controllersに配置するのが一般的で そこにコントローラのコードを書く 流儀に従うとDIやら色々あるけどそこは省略してコントローラに全てのコードを書いて取りあえず構わない (ファットコントローラーが悪いという奴もいるが取りあえず気にしない) returnするときに、HTMLを返すような作りならbladeというテンプレートのファイルと その表示に必要なデータを指定すれば、webページが表示される そのbladeのテンプレートは一般的にはresources/views以下に配置しファイルの命名規則は テンプレート名.blade.phpとなる SQLの部分が一番不満?に思っているかもしれないがこれも慣れで Laravelでは別にモデルを必ず使わなければならないと言う訳でも無く 素のSQLを書いても動くのだが(PHPのPDOクラスを使うような感じでパラメータをバインドするような使い方) 基本的にはEloquentのクエリビルダを使うのが一般的だ この方が慣れると非常に楽になると思う ただ、Laravelの場合idというオートインクリメントのプライマリーキーがデフォルトで全てのテーブルに 存在するという考え方で私は好きなのだがサロゲートキーが嫌いみたいな人も時々いるのでその場合は モデルの定義を若干書き換えれば対応は可能ではある 簡単には説明できないな。この辺で少しは掴んでもらえたらと思う また質問されたら書けることがあれば書いてみる http://mevius.5ch.net/test/read.cgi/tech/1591334726/835
837: デフォルトの名無しさん (ワッチョイ 427c-IMun) [sage] 2021/03/17(水) 23:04:27 ID:W80ESG/m0 >>836 DIは今はどうでもいいのでパスして MVCのModelの部分が納得いかないという事なのは分かるので取りあえずLaravelの話をすると Laravelが採用しているEloquentというのは、railsのactiverecordとか一般的になORMとは結構違う部分があり Eloquentでは、特にカラム名の定義を書く必要はありません (キャストしたりする場合やidがプライマリーキーじゃないなど設定を変更する場合は書く必要があるが) ただ、モデルを扱う上ではキャメルケースで単数形のクラスの定義だけは必要です (テーブル名は基本的に複数形とするが、このルールに従わない場合は、モデル内に実際のテーブル名を指定出来る) モデルクラスを用意しておけば、コントローラから例えばplayersテーブルにアクセスするPlayerクラスのモデルを利用して id=1のデータを取るなら $player = Player::find(1); のような形で取れます。これはselect * from players where id=1 limit 1と同等です 検索キーが違う場合は、Player::where('key',1)->first()みたいな形で一つだけ取って来れます これはselect * from players where key=1 limit 1と同等です find()やfirst()で終わった場合は、結果は一つだけなので、Playerのインスタンスが返されます そのインスタンスには他のカラムのデータ全てが入っている為、player->idやらplayer->keyなどで それぞれのカラムが取得できます 複数になりうる条件の場合、例えばresult = Player::where('key','>',1)->get()みたいな場合は 結果は配列となり帰ってきます この場合、結果が0でも空の配列になるし、結果が一つでも1個の配列になります ですので1個目の結果がいるならresult[0]->idみたいな形でカラムにアクセスしますが 通常ならforeach()等で回ってそれぞれを処理する形になるでしょう http://mevius.5ch.net/test/read.cgi/tech/1591334726/837
838: デフォルトの名無しさん (ワッチョイ 427c-IMun) [sage] 2021/03/17(水) 23:08:35 ID:W80ESG/m0 配列と書きましたがLaravelの場合はCollection型というものがありそれで帰ってきますので 厳密には説明と違う部分がありますが、概要と言う事でご勘弁ください (toArray()など配列に変換したりも出来はします) http://mevius.5ch.net/test/read.cgi/tech/1591334726/838
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.027s