如何在yii框架中将classname转换为classid并存储到DB中

how to convert classname to classid and store into DB in yii framework

我正在使用 yii 框架开发应用程序,我有一个名为 "studentinformation" 的 table,我在其中有一些专栏 table,例如

 id  name   mothername   phone        classid   parentname      email
 1.  xxxxx    asdf       9658741230     2         pqrs        xy@gmail.com 

我还有一个 table 叫做 classname table

 classid  classname
    1.      class1
    2.      class2
    3.      class3

我将 classid 设置为外键,我正在尝试上传 excel 文件而不是填写表格。这是我的 excel 格式数据

 id  name   mothername   phone         classid    parentname      email
 1.  xxxxx    asdf       9658741230     class1      pqrs      xy@gmail.com 

在上面 table 我给了 classname 而不是 od classid 因为用户对 classname 很舒服 table 而不是 classid 但我需要将 classid 存储到数据库

在我的控制器中,我从 excel 文件中获取值,例如

    $newmodel->name=$data[0];
        $newmodel->mothername=$data[1];
        $newmodel->phone=$data[2];
        //i am getting classname instead of classid  
        $classname=$data[11];
        //i need to convert from classname to classid 
       $classdet = Classdetails::model()->findAll(array("condition"=>"classname=>'$classname'"));
      foreach(classdet as $val)
      {
             $classid[] = $val->classid;
      }
   $newmodel->classid = $classid[0];

我没有得到正确的输出,你能帮帮我吗...

你的条件不对,从docsfindAll要以下参数:

  1. $condition(混合)
  2. $params(数组)

就像我在评论中建议的那样尝试使用:

$classdet = Classdetails::model()->findByAttributes(array("classname"=>$classname));

它应该可以工作。 您的代码应如下所示:

$newmodel->name=$data[0];
$newmodel->mothername=$data[1];
$newmodel->phone=$data[2];
$classname=$data[11];
$classdet = Classdetails::model()->findByAttributes(array("classname"=>$classname));
$newmodel->classid = $classdet->classid;
//save or show your new model.

如果在数据库中找不到 classname,您可能想加入一些逻辑来说明会发生什么。但我不知道这是否是一个有效的场景。

像这样:

$newmodel->name=$data[0];
$newmodel->mothername=$data[1];
$newmodel->phone=$data[2];
$classname=$data[11];
$classdet = Classdetails::model()->findByAttributes(array("classname"=>$classname));
$newmodel->classid = 0;
if($classdet){
    $newmodel->classid = $classdet->classid;
}
//save or show your new model.

这样您的 $newmodel->classid 将默认设置为 0。 如果您的 $classdet 不是 null,它将设置正确的值。