从控制器模型(php)中的for循环获取值

从控制器模型(php)中的for循环获取值,php,for-loop,yii,Php,For Loop,Yii,我使用yii框架,但这里有一个php问题。 我努力从循环中获取数据,循环从我的控制器开始,在我的模型中继续,在我的控制器中结束。 这是我的密码: adminController.php public function actionAdmin() { ////code generated by gii//// $model=new vbnm('search'); $model->unsetAttributes(); // clear any default values

我使用yii框架,但这里有一个php问题。 我努力从循环中获取数据,循环从我的控制器开始,在我的模型中继续,在我的控制器中结束。 这是我的密码:

adminController.php

public function actionAdmin()
{
////code generated by gii////
    $model=new vbnm('search');
    $model->unsetAttributes();  // clear any default values
    if(isset($_GET['vbnm'])){
        $model->attributes=$_GET['vbnm'];
    }

////my code////
    $groupid=array();

    $dataArray = vbnm::model()->search()->getData();

    foreach($dataArray as $data){
        $groupid[] = $data->groupvb['joinvbgroup_group_id'];
    }
    $size = count($groupid);

    $values = array();

    for ($i=0; $i<$size; $i++){
        $model->get_user_name($groupid[$i]);
    }

    $this->render('admin',array(
        'model'=>$model,
    ));
}
公共函数actionAdmin()
{
////gii生成的代码////
$model=新vbnm(“搜索”);
$model->unsetAttributes();//清除所有默认值
如果(isset($_GET['vbnm'])){
$model->attributes=$\u GET['vbnm'];
}
////我的代码////
$groupid=array();
$dataArray=vbnm::model()->search()->getData();
foreach($dataArray作为$data){
$groupid[]=$data->groupvb['joinvbgroup\u group\u id'];
}
$size=计数($groupid);
$values=array();
对于($i=0;$iget_用户名($groupid[$i]);
}
$this->render('admin',数组(
'model'=>$model,
));
}
adminModel.php

public function get_user_name($groupId)
{           
    $userid = array();

    $user = Yii::app()->db->createCommand()
    ->select('joinusergroup_user_id')
    ->from('JoinUserGroup')
    ->where('joinusergroup_group_id=:id', array(':id'=>$groupId))
    ->query();

    foreach($user as $key=>$value){
        $userid[] = $value['joinusergroup_user_id'];
    }

    $size=count($userid);

    $username = array();

    for($i=0; $i<$size; $i++){

        $name = Yii::app()->db->createCommand()
        ->select('username')
        ->from('tbl_users')
        ->where('id=:id', array(':id'=>$userid[$i]))
        ->query();

        foreach($name as $key=>$value){
            $username[] = $value['username'];
        }

        $size_n = count($username);

        $uname=array();

        for($j=$i; $j<$size_n; $j++){
            $uname[]=$username[$j];
        }
    }   
}
公共函数get\u user\u name($groupId)
{           
$userid=array();
$user=Yii::app()->db->createCommand()
->选择('joinusergroup\u user\u id')
->来自('JoinUserGroup')
->其中('joinusergroup\u group\u id=:id',数组(':id'=>$groupId))
->查询();
foreach($user as$key=>$value){
$userid[]=$value['joinusergroup\u user\u id'];
}
$size=count($userid);
$username=array();
对于($i=0;$idb->createCommand()
->选择('用户名')
->来自('tbl_用户')
->其中('id=:id',数组(':id'=>$userid[$i]))
->查询();
foreach($key=>$value形式的名称){
$username[]=$value['username'];
}
$size\u n=计数($username);
$uname=array();

对于($j=$i;$j是的,实际上,这看起来不像是非常干净的MVC:-)我建议您将所有逻辑包装到一个Yii FormModel中。您会发现它简化了在表单上显示信息的检索方式,并使保存更容易(所有保存逻辑都在一个位置)

FormModels本质上可以处理多个AR模型,并且可以轻松地在它们之间进行保存

编辑: 为了帮助改进您的代码,我建议您开始进行单元测试/思考如何测试此逻辑。您希望控制器中的逻辑相对较少,以便将大多数应用程序逻辑封装在可以测试的模型中

建议如下:


-Ruby-on-Rails,但它有很好的建议,可以应用于Yii,将值传递到“admin”视图,将用户名存储在$values数组中

然后通过render方法将其传递给视图

$this->render('admin',array(
        'model'=>$model,
        'usernames' => $values
));

// admin view
// and in the 'admin' view file you can access it like this.
print_r($usernames);

谢谢@acorncom,我将尝试这种方式。我也认为这是一种糟糕的MVC实践,还不太熟悉它^^@smarc更新了一些关于如何在这里变得更好的想法。也希望接受检查!:-)是的,最好的办法可能是学习更多关于MVC的知识并尝试另一种方法。感谢文档@acorncom!感谢您的帮助@TamilSh,但我已经尝试过了。它会返回一个空数组,$model->get_user_name($groupid[$I])不会返回任何内容……就好像我的函数get_user_name()不会向控制器返回任何值一样。