我對同一站點結構使用多個域,因此幾乎所有表都有domain_id
列。所以,不是每一次定義域ID的條件,我使用的是其他車型從延伸並在BaseModel的boot
方法有下面這樣的方式(不知道這是最好的一個)Laravel 5.3 - 緩存信息模式查詢
我創建BaseModel
parent::boot();
static::addGlobalScope(new DomainScope());
,這裏是根據文檔
if (Schema::hasColumn($model->getTable(), 'domain_id')) {
$builder->where('domain_id', '=', DOMAIN_ID);
}
這個偉大的工程apply方法的內容,但是如果我有如5查找查詢的同一頁上,在調試面板相同的表(就像一個例子)我看到5查詢這樣
select column_name from information_schema.columns where table_schema = 'my_db_name' and table_name = 'my_table_name'
現在,我完全理解,要檢查是否列存在於表中,它從信息模式中獲取信息,但爲什麼它一次又一次地對同一個表進行相同的查詢。我會假設它應該發出一個請求然後緩存它,並且對於後續的請求只是從緩存中讀取。
q1) laravel是否內部緩存此查詢?我在想,也許是因爲調試已啓用,這就是爲什麼每次都進行查詢?但無法找到任何驗證
q2)如果它不緩存,我可以手動緩存它。我檢查了laravel文檔添加一個緩存,但這裏的問題是查詢是不是由我完成的,所以我不能想出簡單地使用Cache::remember
感謝
非常感謝,緩存方式奏效。我想知道爲什麼這不是一個內置功能 – dav