同じサイト構造に対して複数のドメインを使用しているため、ほぼすべてのテーブルにdomain_id
という列があります。だから、私は次のようなアプローチ(これは最良のものであるかどうかわからない)Laravel 5.3 - キャッシング情報スキーマクエリ
を使用していますたびに、私は他のモデルはから延び、そのBaseModel
のboot
方法でこれを持っていること
BaseModel
を作成しdomain_idに条件を定義しないようにここ
parent::boot();
static::addGlobalScope(new DomainScope());
とは、私が例えばを持っているがあれば、これは素晴らしい作品
if (Schema::hasColumn($model->getTable(), 'domain_id')) {
$builder->where('domain_id', '=', DOMAIN_ID);
}
ドキュメントに記載の方法の内容を適用しています5発見は、私は、私は完全にそれをするかどうかをチェックするために理解し、今、この
select column_name from information_schema.columns where table_schema = 'my_db_name' and table_name = 'my_table_name'
よう5クエリを参照デバッグパネルの(単なる例として)同じテーブルに、同じページ上を問い合わせます列はテーブルに存在し、情報スキーマから情報を取得しますが、なぜ同じテーブルに対して同じクエリを何度も繰り返し実行しています。私はそれが1つの要求をしてからそれをキャッシュし、その後の要求に対してただキャッシュから読み込むべきであると推測します。
q1) laravelはこのクエリを内部的にキャッシュしますか?私は多分デバッグが有効になっていると思っています。それはなぜそのたびにクエリを作るのですか?しかし、これの任意の検証を見つけることができません
q2)とキャッシュされない場合は、私は手動でキャッシュすることができます。私はまあ、私は、クエリを発射しないことをお勧めキャッシュを追加するためのlaravelのドキュメントをチェックしますが、ここでの問題は、そのクエリは、私が行われていないので、私は単にCache::remember
おかげ
ありがとうございます。なぜこの機能が組み込まれていないのだろうか – dav