【发布时间】:2016-11-12 05:40:27
【问题描述】:
我有 3 个类 Persona、Alumno 和 factura。我需要使用 gridview 和搜索功能在 factura 视图上显示人员全名。全名在 Persona 中。 Factura 仅通过 id_alumno 与 alumno 相关,而 alumno 通过 id_persona 与 persona 相关。 我尝试通过创建一个新变量全名和一个函数来获取类 factura 的角色来解决这个问题。
class Factura extends \yii\db\ActiveRecord{
public $full_name;
}
public static function tableName()
{
return 'factura';
}
public function rules()
{
return [
[['id_factura_reemplazo', 'id_obra_social', 'id_alumno',], 'integer'],
[['id_obra_social', 'id_alumno'], 'required'],
[['fecha_factura','fullname','id_persona'], 'safe'],
];
}
public function attributeLabels()
{
return [
'id_factura' => 'Id Factura',
'id_factura_reemplazo' => 'Id Factura Reemplazo',
'id_obra_social' => 'Id Obra Social',
'id_alumno' => 'Id Alumno',
'fullName'=>Yii::t('app', 'Nombre y Apellido'),
];
}
public function getIdAlumno()
{
return $this->hasOne(Alumno::className(), ['id_alumno' => 'id_alumno']);
}
public function getIdPersona() {
return $this->hasOne(Persona::className(), ['id_persona' => 'id_persona'])
->via('idAlumno');
}
public function getFullname(){
if($this->idPersona)
return $this->idPersona->nombre." ".$this->idPersona->apellido;
return null;
}
我得到: 无效调用 – yii\base\InvalidCallException
设置只读属性:app\models\Facturasearch::fullName
if (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
} else {
throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}
就像它没有 getter...当它尝试执行 $this->load($params); 时,问题会跳出行来
class Facturasearch extends Factura{
public function rules()
{
return [
[['id_factura', 'id_factura_reemplazo', 'id_alumno', 'numero'], 'integer'],
[['id_obra_social','fecha_factura', 'observacion','id_alumno','fullName','id_persona'], 'safe'],
];
}
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
public function search($params)
{
$query = Factura::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
...
【问题讨论】:
-
这是我用的,但我的问题不止于此。
-
对不起,我没有深入了解您的问题..但错误似乎与搜索功能有关...当/在哪里出现错误时..当您调用相关的控制器/操作或在您过滤搜索时显示网格视图之后?
-
无论如何我已经发布了第一个建议......希望有用
-
更新您的问题并在 FacturaSearch 模型中添加函数搜索的所有代码