如何在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
要以下参数:
$condition
(混合)
$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
,它将设置正确的值。
我正在使用 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
要以下参数:
$condition
(混合)$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
,它将设置正确的值。