为什么缓存查询时没有缓存关系?

时间:2014-04-25 10:28:49

标签: php mysql sql caching laravel-4

使用下面的查询查询我的数据库;

Model::with('first','second','third','fouth','fiveth')
->orderBy('title')
->remember(2,'domain.query')
->get()

整体查询会被缓存等,但为什么不关联我附加到查询的关系。我是否必须在模型等上加入以完成所有缓存等操作?

发条中的查询:

SELECT * FROM `first_table` WHERE `first_table`.`id` in ('2', '4', '3')
SELECT * FROM `second_table` WHERE `second_table`.`id` in ('2', '5', '1', '4')
SELECT * FROM `third_table` WHERE `third_table`.`id` in ('2', '5', '1', '4')
SELECT * FROM `fouth_table` WHERE `fouth_table`.`id` in ('2', '5', '1', '4')
SELECT * FROM `fiveth_table` WHERE `fiveth_table`.`id` in ('2', '5', '1', '4')

1 个答案:

答案 0 :(得分:0)

“为什么”在某种程度上是一个广泛的问题,它是由框架作者做出的设计决策。绕过它的方法,虽然它不是非常漂亮的代码,但是使用急切的负载约束:

Model::with([ 'first' => function($q) { $q->remember(...); }, 'second' => ... ])->remember(...)->get();