我对同一站点结构使用多个域,因此几乎所有表都有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