首页 > 解决方案 > 集中文本无法正常工作(Yii2 框架)

问题描述

我想从另一个表中集中一些文本并将其放在一个新字段中。

$model1 = new CourseDetails();

$model1->course_shortform= CourseDetails::find()->select('course_shortform')->where(['course_name'=>$model->course_name]);

然后使用下面的代码,我能够从另一个表中获取值来填写字段,如下所示:

$model->intake_no = $model1->course_shortform;

一切都很顺利,直到我想为摄入量没有列添加一些文本:

$model->intake_no = $model1->course_shortform . "This is new text" ;

系统没有显示错误,但会显示如下文本:

参考

我想知道是否有一些替代方法来集中文本,但我无法弄清楚。如果有人可以提供帮助,我会很高兴。

标签: phpyii2

解决方案


您正在创建CourseDetails模型的新实例,然后创建一个查询(的实例ActiveQuery),用于选择course_shortform该查询并将其分配到course_shortform您的代码中的属性中。

而不是你应该跳过这一行:

$model1 = new CourseDetails();

你应该使用你的查询来找到一个这样的模型:

$model1 = CourseDetails::find()
    ->select('course_shortform')
    ->where(['course_name'=>$model->course_name])
    ->one();

或者如果您需要自己创建实例,$model1您应该使用scalar()方法直接获取 select 返回的值。

$model1 = new CourseDetails();

$model1->course_shortform = CourseDetails::find()
    ->select('course_shortform')
    ->where(['course_name'=>$model->course_name])
    ->scalar();

推荐阅读