sailで作ったpostgresのデータベースに接続する sailでのlaravelのインストール 終わっている方は飛ばしてください。
EloquentはLaravelに備わっているORM(Object-relational mapping)です。 Eloquent:利用の開始 5.7 Laravel オブジェクト関連マッピングとはオブジェクトとDB(データベース)の関連のマッピングのことであり、その都合上オブジェクトはデータベースと密接な関係にあります。 <?php class Post extends Model { // これだけでpostsテーブル中の各レコードを呼べる。 } この密接な関係のため、モデルをテストする際にDBが付きまといがちです。何を呼び出すにしても、DBの中を見に行きます。しかしモデルのメソッドのテストはDBから切り離されるべきです。これはモデルのテストがそれ以上掘り下げるべき最小単位のユニットテストであり、テスト失敗の原因がテストやソースコードのエラーかDBのエラーか考える手間を省くべきでもある
最近めっちゃLaravel使ってます。 で、Laravelのコネクションプーリングの話です。 コネクションプーリングとは、DBとの接続を永続化させること。 フレームワークによっては、これがデフォルトで永続化されているものもあるようですが、Laravelの場合はデフォルトで永続化がオフになっています。 DBとの接続の永続化、というと語弊があるかもしれないので補足しておくとPDOオブジェクトのインスタンス化時の接続をキャッシュしておく、といったほうが良いでしょうか。 これによって、毎回クエリ実行時に接続をする必要がなくなるのでオーバーヘッドが短縮され、高速化される、というわけですね。 あまり必要に感じる場面には出くわさないかもしれませんが...笑 で、Laravelでコネクションプーリングを有効にする設定が下記です。 'pgsql' => [ 'driver' => 'pgsql', 'url
どーも! たかぽんです! 今回はLaravelでN+1問題という設計上発生してしまう問題についてしっかり理解していこうと思います! 実際はLaravelに限らず、より一般的なWeb開発等で発生しがちな問題なんですが、特にLaravelの場合どのように発生するのか? そして、どうやって解消すればいいのか?を調べていこうと思います! さて、ではこのN+1問題を理解していこうと思います! WEBで様々なサービスを設計する際、DBから値の取得を行うシーンはたくさんありますよね。 全てのユーザーに紐付いているコメントリストに対して処理をする... 全てのイベントに紐づいている顧客リストに対して処理をする... などなど... そういった状況で、SQLのクエリを発行して情報を集めていく必要がありますが、その際、余分にたくさんのクエリを発行してしまい、少なからず表示速度等に悪影響を出してしまうことをN+
迷えるあなたへまず結論を Laravelでうまくrollbackできない全ての根源はconnectionが違うから。 connectionについて Laravel 5.7では、config/database.phpに記述するだけで、自動でReaderとWriterコネクションを選択してくれます。Laravel Document この機能、実装者にコネクションを意識させなくて良いとても便利な機能なので、おそらくみなさんの現場でもアーキテクトの方がよしなに設定してくれてると思います。 しかし、これがrollbackされない問題の原因かな、と個人的には考えています。「意識させない」が「意識されない」になってしまっているのです。 自動コネクション設定例 'mysql' => [ 'reader' => [ 'host' => [env('DB_READER_HOST', 'localhost')]
【第4回】Composerを使ってお手軽アプリケーション開発 本連載ではComposerで公開されているパッケージの中から、フレームワークを問わず汎用的に使えるライブラリをサンプルコードと共に紹介します。 今回はDBを扱う「Eloquent(Illuminate/Database)」というORMを紹介します。 ORMとEloquent ORMとは? ORMは「Object Relational Mapping (オブジェクト関係マッピング)」と呼ばれている、オプジェクト指向で書かれているプログラムから、オブジェクト指向ではないデータベースなどのデータをオプジェクト指向のように扱う手法のことを言います。 かみ砕いて説明すると、データベースをオブジェクト指向っぽく扱うためのクラス構造ということです。 例えば、 SELECT 'id', 'name', 'age' FROM users WHER
補完が効かないから、カラム名は typo や型を間違えて代入してしまうリスクもあるし、scope も大文字や小文字を間違えてしまうこともあるでしょう。 本記事では Laravel の Model に補完・型情報を付与してくれるライブラリ【Laravel IDE Helper Generator】について解説します。 本記事でできるようになること このように scope を hover すると型定義が出ますし、補完も効きます。 また、カラム名へのアクセスに対しては型補完が効いています(業務ソースなので隠しまくりなのですがご容赦ください)。 この例ですと、とあるテーブルの transferred_at カラムへ日付を保存しているわけですが、日付保存可能かつ、振り込みされていない場合は null が格納されている、といったことがある程度型情報から読み取ることができます(null が良いのかはさて
LaravelのUnitTestでテスト時はデータベースを切り替える LaravelでUnitTestしたとき通常使用しているデータベースとテスト用のデータベースの切り替え方法をご紹介します。 投稿日2018年09月06日 更新日2018年09月06日 データベースのコンフィグファイルにテスト用のコネクションを設定しましす。 ここではsqliteを使用します。databaseディレクトリにtest.sqliteを作成しておきます。 config/database.php 'connections' => [ // ... 'testing' => [ 'driver' => 'sqlite', 'database' => database_path('test.sqlite'), 'prefix' => '', ], ], 次にテスト用のenvファイルを新たに作成します。 DB_CONNE
かなり今更な感じはしますが、最近LaravelのLazyCollectionをよく使うことがあり、改めて整理しておきたくなったので書き連ねてみたいと思います。ほぼ個人的な備忘録的なものになってしまったため無駄に長いかもしれませんが、参考になる方がいたら嬉しいです。 これは何か マニュアル通りの説明になってしまいますが、LaravelのCollectionの遅延版で、元々PHPにはGeneratorというものがありましたが、LazyCollectionはそれをLaravelのCollection風に使えるようにしたものになります。 どんな順番で評価されるか まずはtinker上で簡単なサンプルで確認してみます。同一値を返すmap、3より大きな数値にfilter、10掛けるmap。 $eagerCollection = \Illuminate\Support\Collection::times
HOMEIT関連インフラ(docker)(Laravel)マイグレーション時、php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not knownのエラー dockerで構築したlaravel環境で、マイグレーションエラーしたら下記のようなエラーが出た。 php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known 「php_network_getaddresses: getaddrinfo failed」から始まるエラーは、 ホストの設定や名前解決でエラーが発生していることを示すエラーらしい。 今回は上記エラーの原因と解決策を紹介する。 原因:phpコンテナ内
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く