Laravel 性能:数据透视表

Laravel performance: pivot tables

我找不到关于这个主题的信息:

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

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

但这意味着 Laravel 需要创建所有用户对象只是为了获取 id 然后丢弃所有对象。

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

谢谢

只需在检索到的用户集合上使用 pluck 获取 ID

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

或者您可以使用 Raw SQL.

从 table 本身查询 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();