カテゴリー: Linux
VPS や Vitual Box で使用している Linux、CentOS について勉強したアプリ、設定、コマンドなどを紹介いたします!
学んだこと
- モデルの日時プロパティを設定時は自動で変換してくれるようにし、取得時は PHP の Carbon で扱えるようにする設定
学んだこと
- xxx_id を持つテーブルモデルから xxx テーブルのモデルを取得するには、 belongsTo メソッドでリレーションメソッドを定義する。 -> 1対多 (Inverse) Eloquent:リレーション 5.8 Laravel
- リレーションメソッドよりも動的プロパティを使う。 -> リレーションメソッド 対 動的プロパティ Eloquent:リレーション 5.8 Laravel
- コレクション要素を指定した文字列を末尾に付けて連結する -> implode() コレクション 5.8 Laravel
Laravel 5.8 における belongsToMany の引数まとめ
- 第 1 引数では最終的な接続先モデル名を名前空間含めて指定する
- 第 2 引数では中間テーブル名を指定する
- 第 3 引数では接続元モデル ID を示す中間テーブル内のカラム名を指定する
- 第 4 引数では最終的な接続先モデル ID を示す中間テーブル内のカラム名を指定する
- 第 5 引数では接続元モデル ID のカラム名を指定する
- 第 4 引数では最終的な接続先モデル ID のカラム名を指定する
学んだこと
- aaa テーブルに xxx_id カラムがある場合、 xxx を取得するには belongsTo() を使う。 aaa モデルクラスで次のように使う。なお、 xxx テーブルのプライマーキーは id とする。
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Aaa extends Model
{
public function xxx(): BelongsTo
{
return $this->belongsTo('App¥Xxx', 'xxx_id', 'id');
}
}
- リレーションへはメソッドとしてもアクセスできるが、プロパティとしてアクセスでき、そのほうが性能が有利になる。なぜなら、実際にアクセスされた時にだけそのリレーションのデータはロードされる (遅延ロード) ため。
- Eagerロード で N + 1 問題を回避できる。今回の例では、投稿一覧の取得で 1 回、取得できた 5 件の投稿の各ユーザを取得するのにさらに 5 回、 SQL が発行されていた。それを、 Eager ロードすることによって、 2 回の SQL 発行へ減らすことができた。
学んだこと、気をつけたことまとめ
- 既存の属性を元に算出した、新しい値をアクセサを使用し返す
- フロント側で投稿ステータスの値を判定して対応する日本語を表示、というようなことは絶対に行わない。ビューにロジックが入り込んでしまい読みづらく複雑になってしまうし、同じ内容を必要な回数分コピペしなければならなくなるため。
- 投稿ステータスの日本語名は、定数ファイル (例えば config/const.php) に入れるのではなく、投稿モデル (app/Models/Wp/PostType/Post.php) に持たせた。投稿ステータスを調べたい、加工修正したい時に最も知っているべきで存在しても違和感のないしっくりくる場所が投稿モデルなため。
やりたいこと
- フロント側に投稿 (Post) の投稿ステータス (post_status) の日本語を表示したい。
ポイントと設定内容
- server ディレクティブに 80 と 443 の両方の listen を書くだけ。
server {
listen 80;
listen 443 ssl;
... 略 ...
}
ちなみに、 80 番ポートへのアクセスを 443 番ポートへのアクセスに強制する設定
やりたいこと
- WordPress の データベース構造をそのまま使って、管理者の投稿一覧ページを作りたい。 Laravel 5.5 を使いたい。
学んだことまとめ
WordPress
Laravel 5.5
環境等
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.5
BuildVersion: 18F132
$
インストール方法
- Install Rust – Rust Programming Language
- 2019年6月23日(日) 時点
まとめ
- Laravel 5.5 の package.json には、 "bootstrap-sass": "^3.3.7" とあり、 Bootstrap のバージョンが 3 である。これを 4 にした。
- bootstrap-sass のバージョン 4 はなく、 単純な Bootstrap 4 を指定することからか、 package.json 以外の次のファイルの修正が必要となった。
- resources/assets/js/bootstrap.js
- resources/assets/sass/_variables.scss
- resources/assets/sass/app.scss