Я использую несколько доменов для одной и той же структуры сайта, поэтому почти все таблицы имеют столбец domain_id
. Таким образом, чтобы не определяет Domain_ID условию каждый раз, когда я использую следующий подход (не уверен, если это лучший один)Laravel 5.3 - запросы схемы кэширования информации
я создал BaseModel
, что и другие модели, простирающиеся от и иметь это в boot
методе этого BaseModel
parent::boot();
static::addGlobalScope(new DomainScope());
и вот применить содержание метода, согласно документации
if (Schema::hasColumn($model->getTable(), 'domain_id')) {
$builder->where('domain_id', '=', DOMAIN_ID);
}
Это прекрасно работает, однако, если у меня есть, например, 5 находка запросы на же странице, в ту же таблицу (только в качестве примера) в панели отладки я вижу 5 запросов как этого
select column_name from information_schema.columns where table_schema = 'my_db_name' and table_name = 'my_table_name'
Теперь я прекрасно понимаю, что проверить, является ли столбец существует в таблице, он получает информацию из информационной схемы, но почему он делает один и тот же запрос для одной и той же таблицы снова и снова. Я предполагаю, что он должен сделать один запрос, а затем кешировать его, а для последующих запросов просто читать из кеша.
q1) Является ли laravel внутренним кешем этого запроса? Я думаю, возможно, потому что debug включен, поэтому каждый раз, когда он делает запрос? но не могу найти подтверждение этого
q2), и если он не кэшируется, могу ли я его кешировать вручную. Я проверил Laravel документы для добавления кэша, но проблема здесь, что запрос не сделано мной, так что я не могу понять, просто использовать Cache::remember
Благодаря
большое спасибо, путь кеширования работал. Интересно, почему это не встроенная функция? – dav