Yii2.0 CRUD-Generator根本不读出外键

时间:2017-05-09 14:57:20

标签: yii2

我刚刚使用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`);

0 个答案:

没有答案