* Refector productModel getProjectPairsByProductIdList.
This commit is contained in:
@@ -925,22 +925,19 @@ class productModel extends model
|
||||
* Get project pairs by product.
|
||||
*
|
||||
* @param array $productIdList
|
||||
* @param int $branch
|
||||
* @param int $appendProject
|
||||
* @param string $status all|closed|unclosed
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectPairsByProductIdList(array $productIdList, int $branch = 0, int $appendProject = 0, string $status = ''): array
|
||||
public function getProjectPairsByProductIdList(array $productIdList): array
|
||||
{
|
||||
$projectPairs = array();
|
||||
foreach($productIdList as $productID)
|
||||
{
|
||||
$projects = $this->getProjectPairsByProduct($productID, $branch, $appendProject, $status);
|
||||
$projectPairs = $projectPairs + $projects;
|
||||
}
|
||||
|
||||
return $projectPairs;
|
||||
return $this->dao->select('t2.id, t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->where('t1.product')->in($productIdList)
|
||||
->andWhere('t2.type')->eq('project')
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
|
||||
->andWhere('t2.deleted')->eq('0')
|
||||
->orderBy('t1.product,order_asc')
|
||||
->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . "/test/lib/init.php";
|
||||
include dirname(__FILE__, 2) . '/product.class.php';
|
||||
|
||||
$product = zdTable('product');
|
||||
$product->type->range('normal{2},branch,normal{2}');
|
||||
$product->gen(5);
|
||||
|
||||
$project = zdTable('project');
|
||||
$project->status->range('wait{2},doing{4},suspended,closed');
|
||||
$project->multiple->range('0{25},1{25}');
|
||||
$project->gen(50);
|
||||
|
||||
$projectproduct = zdTable('projectproduct');
|
||||
$projectproduct->product->range('1-4');
|
||||
$projectproduct->project->range('11-70');
|
||||
$projectproduct->branch->range('0{2},1,0');
|
||||
$projectproduct->gen(50);
|
||||
|
||||
/**
|
||||
|
||||
title=测试productTao->getProjectPairsByProductIdList();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$product = $tester->loadModel('product');
|
||||
$product->app->user->admin = true;
|
||||
|
||||
r($product->getProjectPairsByProductIdList(array())) && p() && e('0'); //不传入产品 ID。
|
||||
r(count($product->getProjectPairsByProductIdList(array(4)))) && p() && e('12'); //用超级管理员账号,传入单个产品数组,确认获取条目数。
|
||||
r(count($product->getProjectPairsByProductIdList(array(3, 4)))) && p() && e('24'); //用超级管理员账号,传入多个产品数组,确认获取条目数。
|
||||
r(count($product->getProjectPairsByProductIdList(array(4, 10)))) && p() && e('12'); //用超级管理员账号,传入产品数组中含有不存在的产品,确认获取条目数。
|
||||
|
||||
$product->app->user->admin = false;
|
||||
$product->app->user->view->projects = '14,38,46,58';
|
||||
r(count($product->getProjectPairsByProductIdList(array(4)))) && p() && e('4'); //不用超级管理员账号,传入单个产品数组,确认获取条目数。
|
||||
r(count($product->getProjectPairsByProductIdList(array(3, 4)))) && p() && e('4'); //不用超级管理员账号,传入多个产品数组,确认获取条目数。
|
||||
r(count($product->getProjectPairsByProductIdList(array(4, 10)))) && p() && e('4'); //不用超级管理员账号,传入产品数组中含有不存在的产品,确认获取条目数。
|
||||
Reference in New Issue
Block a user