タグ

dbとeloquentに関するokyawaのブックマーク (5)

  • 【Laravel】DBに依存させずにEloquentモデルをテストする

    EloquentはLaravelに備わっているORM(Object-relational mapping)です。 Eloquent:利用の開始 5.7 Laravel オブジェクト関連マッピングとはオブジェクトとDB(データベース)の関連のマッピングのことであり、その都合上オブジェクトはデータベースと密接な関係にあります。 <?php class Post extends Model { // これだけでpostsテーブル中の各レコードを呼べる。 } この密接な関係のため、モデルをテストする際にDBが付きまといがちです。何を呼び出すにしても、DBの中を見に行きます。しかしモデルのメソッドのテストはDBから切り離されるべきです。これはモデルのテストがそれ以上掘り下げるべき最小単位のユニットテストであり、テスト失敗の原因がテストやソースコードのエラーかDBのエラーか考える手間を省くべきでもある

    【Laravel】DBに依存させずにEloquentモデルをテストする
  • LaravelでPostgreSQLでもコネクションプーリングする方法 - ふんばりフロントエンジニアのブログ

    最近めっちゃLaravel使ってます。 で、Laravelのコネクションプーリングの話です。 コネクションプーリングとは、DBとの接続を永続化させること。 フレームワークによっては、これがデフォルトで永続化されているものもあるようですが、Laravelの場合はデフォルトで永続化がオフになっています。 DBとの接続の永続化、というと語弊があるかもしれないので補足しておくとPDOオブジェクトのインスタンス化時の接続をキャッシュしておく、といったほうが良いでしょうか。 これによって、毎回クエリ実行時に接続をする必要がなくなるのでオーバーヘッドが短縮され、高速化される、というわけですね。 あまり必要に感じる場面には出くわさないかもしれませんが...笑 で、Laravelでコネクションプーリングを有効にする設定が下記です。 'pgsql' => [ 'driver' => 'pgsql', 'url

    LaravelでPostgreSQLでもコネクションプーリングする方法 - ふんばりフロントエンジニアのブログ
  • 【Laravel】N+1問題を完全理解!解消法も!

    どーも! たかぽんです! 今回はLaravelでN+1問題という設計上発生してしまう問題についてしっかり理解していこうと思います! 実際はLaravelに限らず、より一般的なWeb開発等で発生しがちな問題なんですが、特にLaravelの場合どのように発生するのか? そして、どうやって解消すればいいのか?を調べていこうと思います! さて、ではこのN+1問題を理解していこうと思います! WEBで様々なサービスを設計する際、DBから値の取得を行うシーンはたくさんありますよね。 全てのユーザーに紐付いているコメントリストに対して処理をする... 全てのイベントに紐づいている顧客リストに対して処理をする... などなど... そういった状況で、SQLのクエリを発行して情報を集めていく必要がありますが、その際、余分にたくさんのクエリを発行してしまい、少なからず表示速度等に悪影響を出してしまうことをN+

    【Laravel】N+1問題を完全理解!解消法も!
  • Laravelのトランザクションでrollbackされない問題 - Qiita

    迷えるあなたへまず結論を Laravelでうまくrollbackできない全ての根源はconnectionが違うから。 connectionについて Laravel 5.7では、config/database.phpに記述するだけで、自動でReaderとWriterコネクションを選択してくれます。Laravel Document この機能、実装者にコネクションを意識させなくて良いとても便利な機能なので、おそらくみなさんの現場でもアーキテクトの方がよしなに設定してくれてると思います。 しかし、これがrollbackされない問題の原因かな、と個人的には考えています。「意識させない」が「意識されない」になってしまっているのです。 自動コネクション設定例 'mysql' => [ 'reader' => [ 'host' => [env('DB_READER_HOST', 'localhost')]

    Laravelのトランザクションでrollbackされない問題 - Qiita
  • LaravelのModelに補完が効かなくて辛い人たちに贈る「Laravel IDE Helper Generator」の紹介 - Qiita

    補完が効かないから、カラム名は typo や型を間違えて代入してしまうリスクもあるし、scope も大文字や小文字を間違えてしまうこともあるでしょう。 記事では Laravel の Model に補完・型情報を付与してくれるライブラリ【Laravel IDE Helper Generator】について解説します。 記事でできるようになること このように scope を hover すると型定義が出ますし、補完も効きます。 また、カラム名へのアクセスに対しては型補完が効いています(業務ソースなので隠しまくりなのですがご容赦ください)。 この例ですと、とあるテーブルの transferred_at カラムへ日付を保存しているわけですが、日付保存可能かつ、振り込みされていない場合は null が格納されている、といったことがある程度型情報から読み取ることができます(null が良いのかはさて

    LaravelのModelに補完が効かなくて辛い人たちに贈る「Laravel IDE Helper Generator」の紹介 - Qiita
  • 1