Php 将firstname和lastname合并为fullname
我用的是Yii2。我想要实现的是: 在选择时,将firstName与lastName组合并获取fullname 在“插入”上,将它们分开并插入 出于这个原因,我将我的伪代码放在下面。但当我从视图中调用fullname时,它返回null。我做错了什么Php 将firstname和lastname合并为fullname,php,yii2,Php,Yii2,我用的是Yii2。我想要实现的是: 在选择时,将firstName与lastName组合并获取fullname 在“插入”上,将它们分开并插入 出于这个原因,我将我的伪代码放在下面。但当我从视图中调用fullname时,它返回null。我做错了什么 public $fullname; ... public function rules() { return [ ... [['fullname'],
public $fullname;
...
public function rules()
{
return [
...
[['fullname'], 'safe'],
...
];
}
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
if ($this->fullname) {
$pieces = explode(" ", $this->fullname);
if (count($pieces) > 1) {
$this->firstName = $pieces[0];
$this->lastName = $pieces[1];
}
}
return true;
} else {
return false;
}
}
public function afterFind()
{
$this->fullname = "$this->firstName $this->lastName";
parent::afterFind();
}
我不确定这是否是问题所在,但您在第[[fullname'],“safe']行出现语法错误-您缺少撇号。我不认为您像使用fullname一样将firstName和lastName声明为公共变量。是吗?@m7o模型从数据库中获取它们。Fullname是一个自定义变量,由firstName和lastNameYes组成,但是当您在两个不同的函数beforeSave和afterFind中使用它们时,应该将它们声明为公共变量。如果未声明它们,afterFind将不知道它们。@m7o否,如果它们是数据库表列,则它们作为虚拟属性存在,无需将它们作为公共属性添加。