Memo

メモ > 技術 > フレームワーク: Laravel6 > メモ

メモ
■引き続き Laravel.txt の内容を再検証して移植する 最低限のモデル作成&操作をメモしておきたい マイグレーションの列作成は「$table->bigInteger('user_id')->unsigned();」のように書けるかも。それならその方が直感的でいいかも 以下にusersとrolesを中間テーブルrole_userで紐付けてbelongsToManyで関係を定義する方法が紹介されている 参考にしてEntryとCategoryを多対多で紐付けてみたい Eloquent:リレーション 6.x Laravel https://readouble.com/laravel/6.x/ja/eloquent-relationships.html 現状Contractがあまり生かされていない?もしくは現状で十分? 一応、今サービスで呼び出しているのはリポジトリのContractではある 以下で紹介されている「クラスの差し替えを容易にする」「機能のドキュメントとして利用できるようにする」は実現できているとは思う 契約 6.x Laravel https://readouble.com/laravel/6.x/ja/contracts.html マイグレーションファイル内のクラス名が重複していても、マイグレーションの一括実行はできるか 今もできないなら、自分で新規にマイグレーションを作成した場合は CreateAdminsTable20200408000000 のようにクラス名に日時を含めるか マイグレーションの not null や unsigned の書き方を検討したい マイグレーションでのコメント追加、単体テスト時にエラーになるか ALTER TABLE の実行を「if (!app()->runningUnitTests()) { 〜 }」で囲う必要があるか fallback_locale も最初に設定するか と思ったが、以下で「ここは該当言語が見つからない場合の言語です。「en」がいいでしょう。」とあるので、デフォルトのままで良さそう 【Laravel5.6】インストール直後にやること3点 - console dot log https://blog.capilano-fw.com/?p=289 Laravel管理画面「laravel-admin」を日本語化する。設定ファイルで対応 https://diy.hot-maker.com/454/ 汎用的な検索用に getUsers メソッドがあるが、原則 getAdminUsers など専用にサービスのメソッドを設けるべきか 直接リポジトリを呼ぶという手もあるが、煩雑になるので常にサービス経由で呼ぶ方が良さそう またそれなら、サービスに対してだけテストを書けば良くなる 記事管理を作る ユーザの単一選択、カテゴリの複数選択、ファイルアップロード、プレビュー などを検証したい 単体テストを書く リポジトリクラスを差し替えてテストしたりも試したい LaravelでCRUD - Qiita https://qiita.com/apricotcomic/items/07f172a957c1f342fd91 【Laravel】DB登録値取得時のfind()、get()、first()の返り値早見表 - Qiita https://qiita.com/sola-msr/items/fac931c72e1c46ae5f0f デバッグ用の命令 【超入門】Laravelのデバッグ手法22選 - Qiita https://qiita.com/ucan-lab/items/29614d0f3ded1d3a94fb Laravelのdd() - Qiita https://qiita.com/kyohei121877/items/ba596b57d6027cc21166 以下はLaravelに関する後発の記事。参考になるかも Laravel 6 基本のタスクリスト - Qiita https://qiita.com/ucan-lab/items/36f6e89abad26a68f69a Laravel入門 - 使い方チュートリアル - - Qiita https://qiita.com/sano1202/items/6021856b70e4f8d3dc3d Laravelでの開発でいつもやってることまとめ https://zenn.dev/nrikiji/articles/d5b991402ea89c マスター/スレーブのデータベースに対して、 「SELECTクエリ発行時はスレーブ」「それ以外はwriteマスター」 ができるらしい Laravelでマスター/スレーブ構成のデータベースに接続するための設定 | I am a software engineer https://imanengineer.net/laravel-how-to-configure-master-slave-db/ ■更新する場合 SSHで接続して以下を実行
$ sudo su -s /bin/bash - nginx $ cd /var/www/main $ composer install $ composer dump-autoload $ php artisan migrate $ php artisan db:seed $ php artisan cache:clear $ php artisan config:clear $ php artisan route:clear $ php artisan view:clear
クリア系のコマンドに関しては、以下だけで十分かもしれない
$ php artisan view:clear
■データベースに接続する場合 mysqlコマンドで接続してもいいが、以下で接続することもできる
$ php artisan db
■複雑なクエリ ※検証中 コントローラーに複雑なクエリは書かずに、 サービス経由でリポジトリを呼び出して、その中で具体的なクエリを定義するか 例えば、リポジトリで以下のように定義しておく
if (isset($conditions['payment_at'])) { $query->leftJoin('user_campaigns', 'user_accounts.user_campaign_id', '=', 'user_campaigns.id'); $query->where(function($query) use ($conditions) { $query->where(function($query) use ($conditions) { $query->whereNull('user_campaign_id'); $query->where('registered_at', '<', $conditions['payment_at']); }); $query->orWhere(function($query) use ($conditions) { $query->whereNotNull('user_campaign_id'); $query->whereRaw('DATE_ADD(registered_at, INTERVAL user_campaigns.continuation MONTH) < ?', [$conditions['payment_at']]); }); }); }
コントローラーから以下のように呼び出す
$users = $this->userAccountService->searchPaymentAccounts([ 'payment_at' => '2021-10-01 16:55:00', ], [['user_accounts.id', 'asc']], null); foreach ($users as $user) { // 何かしらの処理 }
データベース:クエリビルダ 6.x Laravel https://readouble.com/laravel/6.x/ja/queries.html

Advertisement