集中文本功能不正常(Yii2 框架)

Concentrate text not function properly (Yii2 framework)

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

$model1 = new CourseDetails();

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

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

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

一切顺利,直到我想为 intake no 列添加一些文本:

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

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

我想知道是否有其他方法可以集中文本,但我想不通。如果有人能提供帮助,我会很高兴。

您错过了获取函数.. 对于模型应该是 ->one()

$model1 = new CourseDetails();

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

并且您不应该将模型分配给文本字段 var,这样您就不会在 $model 1->course_shortform 上而是在 $model1

您正在创建 CourseDetails 模型的新实例,然后您为 selecting course_shortform 创建一个查询(ActiveQuery 的实例)并将该查询分配给 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();