我必须查找名字和姓氏的组合,即fname & lname的concat,并返回所有可能的匹配项。现在,我已经能够通过查找x1e0 f1.成功地完成这项工作。
现在我有了一个模型类,我可以在其中搜索学生姓名,如下所示:
class StudentRegistration extends CActiveRecord
{
/**
* Public Varibale that defines the full name
*/
public $full_name;
//my search function has something like this
public function search()
{
$criteria=new CDbCriteria;
$criteria->addSearchCondition('concat(fname, " ", lname)', $this->full_name);
.
.
.
//my rules defining this
full_name', 'safe', 'on'=>'search'),
//my getter method like this
public function getFull_Name()
{
return $this->fld_fname.' '.$this->fld_lname;
}
}
使用这种结构,我已经能够将全名属性添加到我的视图中,并且能够在我的表单视图中搜索全名。
现在,我完全被难住了,我试图访问我定义的搜索条件,在另一个视图中使用不同的模型搜索 AJAX 函数的全名。
我在这里为name字段定义了一个变量,并分配了一个控制器来返回studentReg模型搜索的搜索结果。但是我没有成功(如果我设置断点来抱怨监视存在,我的netbeans/xdebug会毫不客气地崩溃,而我却没有)
这是我的搜索操作类
class StudentRegChecklistController extends Controller
{
.
.
.
.
.
public function actionSearchStudent()
{
if(Yii::app()->request->getIsAjaxRequest() && isset($_POST["autoField"]))
{
$models= StudentSearch::searchStudent($_POST["autoField"]);
$criteria=new CDbCriteria;
$criteria->compare("full_name",$_POST["autoField"],true);
$models= StudentRegistration::model()->findAll($criteria);
foreach($models as $model)
{
echo "<option value=$model->gno style=\"font-size:18px;cursor:pointer\">".$model->fname." ".$model->lname."</option>";
echo "</br>";
}
}
我在控制器中做错了什么?试图实现一些like this
1条答案
按热度按时间w1e3prcc1#
看起来您使用的是
StudentRegistration::model()->findAll($criteria)
,而不是StudentRegistration::model()->search()
第一种方法将使用 $criteria 信息查看模型表,并尝试匹配相关的表列。但 full_name 不是表列。
如果你想添加更多的过滤器,只需在你用作过滤器的示例中设置相关的属性即可。
**注意:**如果您的所有输入都是“可安全搜索的”,则您可能希望使用由CActiveRecord处理的大量赋值,而不是 setAttributes():
如果它们不是“可安全搜索的”,请将setAttributes()的第二个参数设置为false。或者使用 setAttribute()...