バイト、正社員含めこれまで飲食・アパレル・美容と完全接客業しかしたことがないアラフォー女が、とあるきっかけで2023年、全くの未経験でITエンジニアに転職。
完全文系、理系的な思考が苦手。(この時点で完全向いてないw)
とあるIT会社で勉強しながら働いてますが、ほぼ独学。
自分の勉強記録、復習用として書いてます。
<勉強中>
PHP、VUE、JS
・VisualStudioCode
・laravel
・Mysql
バリデーションの種類(リクエストファイル)
「php artisan make:request ファイル名」 でリクエストファイルを作成した上で。
'sr_code' => ['required', 'max:6'],
// 7桁ピッタリ必須(nullable)とセットで!
※ignore = 無視する
->ignore()を使うとその条件は無視できる。
今回の ->ignore($this->route('company'))], は編集中のform(Companiesテーブル)のIDを取得しそのIDは重複しても可。にしている。
Rule::unique(Company::class)だけだと、メアド以外の項目変更した際に「メアドが重複している」のエラーがでてしまうのでそれを避けるため。
【nova】基礎
NOVA
nove DB
リソース = テーブル
フィールド = カラム
Http/app/Novaの中に管理画面左側のメニュー分のファイルがある。
基本
①モデル+マイグレファイル作成→マイグレする
②php artisan nova:resource 【アッパーキャメルファイル名(Testと仮定)】
③Http/app/Novaの中にTest.phpファイルができる
左側のメニューラベル変更 → labelに書く
新規作成の中身作成 → fieldsに書く
];
}
Article.phpの中
fieldsForIndex
このメソッドは、管理画面の一覧ページで表示されるものを定義
fieldsForDetail
このメソッドは、管理画面の詳細ページ(👁マーククリック先)で表示されるものを定義
fields
このメソッドは、新規作成で表示されるものを定義
※一覧ページや詳細ページなど、どのページでも共通して表示されるフィールドを定義
【よく使いそうなメソッドの種類】
// DB「1970/02/20 生」のデータを、生を除外して「1970/02/20」で表示させる(get attributeでも可能)
//インデックスと詳細ページでは、キーが表示されるので、=>右のvalue(ラベル)を表示する場合はこのオプションを使う
//インデックスと詳細ページでは、キー(0〜2)が表示されるので、=>右のラベルを表示する場合はこのオプションを使う
【ddやconsoleの代わりにデータの中身を確認する方法】
logを使う。
fieldsのreturnの前に
でlaravel.logで確認できる。
【リレーションの書き方】
BelongsToMany::make($name, $relationship, $resource)
// 書き方①
BelongsToMany::make('業種', 'industry', 'App\Nova\Industry'),
// 書き方②
$name:
表示されるリレーションフィールドの名前を指定。Novaのフォームに表示されるテキスト。
$relationship:
Eloquentモデルに定義されている多対多のリレーションメソッドを指定。これにより、Novaはどの関連データを取得するかを知ることができる。
$resource:
多対多のリレーションで関連付けられたリソースを指定。これにより、関連データが表示される際にどのNovaリソースを使用するかを定義。
BelongsTo::make($name, $attribute = null, $resource = null)
// 書き方①
BelongsTo::make('Company')->sortable()->filterable()->readonly(),
BelongsTo::make('User', 'user', User::class),
$name:
リレーションフィールドの名前を指定。Novaのフォームに表示されるテキスト。
$attribute:
リレーション先のモデルで、表示したい属性の名前を指定します。この属性が表示される。省略された場合、デフォルトではリレーション先のモデルの__toString メソッドが呼ばれる。
$resource:
リレーション先のリソースを指定。このリソースが関連するデータの詳細などの表示に使用される。省略された場合、Novaはリレーション先のモデルクラスから自動的にリソースを推定しようとする。
【コードの意味】
// カテゴリが【重要なお知らせ】だったら表示させる
// カテゴリが【レポート】だったら表示させる
// カテゴリが【新着情報】または【チケット】だったら表示させる
【vue】console.logでのデータの中身確認
この受け取り方だとconsoleで中身を確認できない。
だと確認できる。
auth()->user()の色々な使い道
【単一データで取得】
※userモデルにリレーション定義済
結果、以下のように単一データで取得できる
array:18 [▼ // app/Http/Controllers/User/OfficeController.php:71 "id" => 1 "code" => "11" "name" => "てすと事務所"
【配列データで取得】
※userモデルにリレーション定義済
結果、以下のように配列のデータで取得できる
array:1 [▼ // app/Http/Controllers/User/OfficeController.php:74 0 => array:18 [▼ "id" => 1 "code" => "11" "name" => "てすと事務所"
正規表現・バリデーション
正規表現とは
・正規表現のパターンに一致する文字列を検索したり
・見つかった文字列を別の文字列に置換する場合に使われたり、
・入力された文字列が正規表現で表現されるパターンに一致するかどうかをチェックする時などに使われる。
※現状はvueのHTMLに組み込んでバリデーションとして使用のみ
書いておくと、保存ボタン押す前に事前にチェック入り、正規表現に沿っていなければエラーメッセージが表示される。
【よく使いそうなパターン】
郵便番号
※半角数字のみOK
pattern="[0-9]*"
"title=""ハイフンなしの半角数字を入力してください"" "
住所フリガナ
※全角のカナ、数字、記号のみOK
pattern="[ァ-ヶ0-9々〆ー- ]*"
title="全角カタカナ、数字を入力してください"
電話・FAX
※半角数字のハイフンありの電話番号(携帯もいけるが15桁以上になる国際電話等は無理)を許可
pattern="^0\d{1,4}-\d{1,4}-\d{1,4}$"
title="ハイフンありの半角数字を入力してください"
メールアドレス
※半角英数字、@あり、@の後に最低ドット1つありを許可
pattern="[A-Za-z0-9]+@[A-Za-z0-9]+\.[A-Za-z]+"
title="半角英数字、@をつけて有効なアドレスを入力してください"
【その他】
全角カナ・全角スペースのみOK
pattern="[ァ-ヶ ]*"
title="カタカナを入力してください"
全角と半角カナ、全角&半角スペースのみOK
pattern="[ァ-ヶヲ-゚ ]*"
title="カタカナを入力してください"
半角カナ、半角スペースのみOK
pattern="[ヲ-゚ ]*"
title="半角カタカナを入力してください"
全角・半角数字のみOK
pattern="[0-90-9]*"
title="数字を入力してください"
カタカナ・数字・ハイフンのみOK
pattern="^[ァ-ンヴーァ-ン゙゚0-90-9\- ]+$"
title="カタカナまたは数字を入力して下さい"
全角の漢字、ひらがな、カタカナ、英語、数字、記号を許可
pattern="[一-龠ァ-ヶぁ-んヲ-゚a-zA-Z0-90-9A-Za-zー!-/:-@[-`{-~]]*"
title="全角で入力してください"
inertia⇔vueでのフラッシュメッセージの表示方法
コントローラーで
と書き、リダイレクトするページのコントローラーで
そのvueの<setup script>内で以下のどっちかで受取り、
テンプレ内で
メッセージ表示できる。
ちなみに、const ●●は変数を指定していて、
const props = defineProps({
success_message: {
type: String
}
});
はpropsという変数を指定しているから、表示する時は
{{ props.success_message }}
になるが、もし値を受け取るだけの
defineProps({
success_message: {
type: String
}
});
にする場合は
{{ success_message }}
で表示できる。