我刚刚使用FORM-Generator创建了三个模式。此外,我使用CRUD-Generator创建了以下文件:
generated controllers\BewerbungenController.php
generated models\BewerbungenSearch.php
generated views\bewerbungen\_form.php
generated views\bewerbungen\_search.php
generated views\bewerbungen\create.php
generated views\bewerbungen\index.php
generated views\bewerbungen\update.php generated views\bewerbungen\view.php
done
Unfortunatley,Yii2.0只是按原样读出表格,而不识别其中的外键。我该如何解决这个问题?
我可以使用生成器的任何扩展或小部件,还是我必须像这样编程查询:
$sql = "SELECT datum,firma,art,stadt,plz,strasse_nr,ansprech_person,email,notiz
AS feedback,bemerkung FROM bewerbungen JOIN rechtsform
ON bewerbungen.rechtsart=rechtsform.id_recht
JOIN nachricht ON bewerbungen.feedback=nachricht.id_message ORDER BY datum DESC";
namespace app\models;
use Yii;
/**
* This is the model class for table "bewerbungen".
*
* @property integer $bew_id
* @property string $datum
* @property string $firma
* @property integer $rechtsart
* @property string $stadt
* @property integer $plz
* @property string $strasse_nr
* @property string $ansprech_person
* @property string $email
* @property integer $feedback
* @property string $bemerkung
*
* @property Nachricht $feedback0
* @property Rechtsform $rechtsart0
*/
class Bewerbungen extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'bewerbungen';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['datum', 'firma', 'stadt', 'plz', 'email'], 'required'],
[['datum'], 'safe'],
[['rechtsart', 'plz', 'feedback'], 'integer'],
[['firma', 'stadt', 'strasse_nr', 'ansprech_person'], 'string', 'max' => 100],
[['email'], 'string', 'max' => 50],
[['bemerkung'], 'string', 'max' => 150],
[['feedback'], 'exist', 'skipOnError' => true, 'targetClass' => Nachricht::className(), 'targetAttribute' => ['feedback' => 'id_message']],
[['rechtsart'], 'exist', 'skipOnError' => true, 'targetClass' => Rechtsform::className(), 'targetAttribute' => ['rechtsart' => 'id_recht']],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'bew_id' => 'Bew ID',
'datum' => 'Datum',
'firma' => 'Firma',
'rechtsart' => 'Rechtsart',
'stadt' => 'Stadt',
'plz' => 'Plz',
'strasse_nr' => 'Strasse Nr',
'ansprech_person' => 'Ansprech Person',
'email' => 'Email',
'feedback' => 'Feedback',
'bemerkung' => 'Bemerkung',
];
}
/**
* @return \yii\db\ActiveQuery
*/
public function getFeedback0()
{
return $this->hasOne(Nachricht::className(), ['id_message' => 'feedback']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getRechtsart0()
{
return $this->hasOne(Rechtsform::className(), ['id_recht' => 'rechtsart']);
}
}
看起来,公共函数getFeedback0()和公共函数getRechtsart0()是完全可有可无的!
表格,其外键不会读出来:
CREATE TABLE `bewerbungen` (
`bew_id` int(11) NOT NULL,
`datum` date NOT NULL,
`firma` varchar(100) COLLATE utf8_german2_ci NOT NULL,
`rechtsart` int(11) DEFAULT NULL,
`stadt` varchar(100) COLLATE utf8_german2_ci NOT NULL,
`plz` int(11) NOT NULL,
`strasse_nr` varchar(100) COLLATE utf8_german2_ci DEFAULT NULL,
`ansprech_person` varchar(100) COLLATE utf8_german2_ci DEFAULT NULL,
`email` varchar(50) COLLATE utf8_german2_ci NOT NULL,
`feedback` int(11) DEFAULT NULL,
`bemerkung` varchar(150) COLLATE utf8_german2_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_german2_ci;
ALTER TABLE `bewerbungen`
ADD CONSTRAINT `bewerbungen_ibfk_1` FOREIGN KEY (`feedback`) REFERENCES `nachricht` (`id_message`),
ADD CONSTRAINT `bewerbungen_ibfk_2` FOREIGN KEY (`rechtsart`) REFERENCES `rechtsform` (`id_recht`);