Laravel性能:数据透视表

时间:2018-05-09 00:14:06

标签: laravel performance laravel-5 laravel-5.5

我无法找到有关此主题的信息:

我在我的系统上进行了一些操作,需要从购买特定产品的用户那里获取ID,所以我可以这样做:

foreach($oProduct->users as $oUser){
    HelperClass::registerOperation($oUser->id);
}

但这意味着Laravel需要创建所有User对象才能获取id,然后丢弃所有对象。

直接从数据透视表中获取所有用户ID的最佳方法是什么,而无需加载数百或数千个对象?

由于

1 个答案:

答案 0 :(得分:0)

只需在检索到的用户集合

上使用pluck获取ID
foreach($oProduct->users->pluck('id') as $oUser){
    HelperClass::registerOperation($oUser);
}

或者您可以使用Raw SQL从表本身查询ID。

$ids = DB::select('select user_id from product_user where product_id = ?', [$oProduct->id]);

或者QueryBuilder

$ids = DB::table('product_user')->select('user_id')
                                ->where('product_id', $oProduct->id)
                                ->get();