fuelphp MODLE inMethod方法扩展 - lextel/evolution GitHub Wiki
model层扩展两函数
/**
* 遍历所有某些ID
*
* 使用:
*
* $orders = Model_Order::find('all');
* list($memberIds, $phaseIds) = Model_Order::getIds($orders, ['member_id', 'phase_id']);
*
* @param $modelObj array 取出的记录对象
* @param $idFields array 收集的字段
*
* @return array
*/
public static function getIds($modelObj, $idFields) {
$data = [];
foreach($modelObj as $key => $item) {
foreach($idFields as $field) {
$data[$key][] = $item->$field;
}
}
return $data;
}
/**
* 批量获取记录
*
* 单表查询辅助,把每条记录都需查询一次的信息组成一条sql
* 比如: 晒单列表 每个晒单需要读取一次会员信息将会产生一条sql
* 优化成先循环当前晒单得到所有的会员ID,一次获取再通过索引调用相应的会员信息
*
* 使用:
* $orders = Model_Order::find('all');
* list($memberIds, $phaseIds) = Model_Order::getIds($orders, ['member_id', 'phase_id']);
*
* $members = Model_Member::byIds($memberIds);
*
* @param $ids array 主键ID
*
* @return array
*/
public static function byIds($ids) {
$model = get_called_class();
$results = $model::find('all', ['where' => ['id', 'in', $ids](/lextel/evolution/wiki/'id',-'in',-$ids)]);
$data = [];
foreach($results as $result) {
$data[$result->id] = $result;
}
return $data;
}