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();
我找不到关于这个主题的信息:
我正在我的系统上进行一些操作,需要从购买特定产品的用户那里获取 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();