Yii2 - 如何在名称中使用带破折号( - )的属性

时间:2016-10-05 18:23:41

标签: yii2

我正在尝试使用

生成活动表单字段
<?php $form = ActiveForm::begin(); ?>
...
<?= $form->field($competitor, 't-shirt_size' )->textInput(['maxlength' => true]) ?>

给了我以下错误

Attribute name must contain word characters only.

数据库中的字段名称为t-shirt_size

1 个答案:

答案 0 :(得分:0)

由于ActiveRecord模式的工作方式,您会看到此错误。

可以在Yii 2 Guide

中找到相关说明
  

由于Active Record属性以表列命名,您可能会发现正在编写像$customer->first_name这样的PHP代码,如果您的表列被命名,它会使用下划线来分隔属性名称中的单词通过这种方式。如果您担心代码样式的一致性,则应相应地重命名表列(例如,使用camelCase)。

在PHP中,您不能在其名称中创建带有破折号的对象属性,因此尽管在某些数据库引擎中允许,但带有破折号的DB列名称将不可用作ActiveRecord属性。

您必须重命名数据库字段或使用除ActiveForm小部件之外的其他内容来生成表单,但我不确定您是否不会在其他地方遇到有关此属性的异常。