【发布时间】:2016-04-27 17:40:24
【问题描述】:
一个用户可能有很多投票和很多场合。一个场合可以包含其中一些投票。
彼得创建了三张选票。他还创造了一次获得两票的机会。彼得一共有五票。
我想获取所有选票,出于性能原因,这些选票不属于某个场合。
这将加载所有投票:
$oUser->load( 'votes' );
这是我到目前为止所做的:
$aLoad = array( 'votes' => function($query) {
$query->whereNotIn('id', json_decode(json_encode(DB::raw('select id from occasions_votes')), true));
});
我的问题
- 它不起作用。这仍然会获取所有选票,即使 id 存在于场合投票表中。
- 这看起来不会节省性能。
你会怎么解决?
我应该进行多个查询(获取所有投票 ID > 删除所有存在于场合投票中的投票 ID > 获取剩余 ID 的投票)还是有直接的方法? (Laravel 4.2)
【问题讨论】:
-
我的问题是为什么
$oUser->load( 'votes' );会加载所有选票?它应该只加载用户的投票,而不是用户的场合投票。听起来架构更改是有序的,并且投票应该对用户和场合是多态的。
标签: laravel laravel-4 eloquent eager-loading