мусорное ведро не создает ассоциацию - PullRequest
0 голосов
/ 02 октября 2018

У меня есть 2 таблицы, и я хочу создать между ними связь, однако bin / cake делает это неправильно.

CREATE TABLE `teams` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `joiningID` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
     `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
     `admin` int(11) NOT NULL,
     `created` datetime NOT NULL,
     `modified` datetime NOT NULL,
     PRIMARY KEY (`id`),
     UNIQUE KEY `admin` (`admin`),
     UNIQUE KEY `name` (`name`),
     CONSTRAINT `fk_admin` FOREIGN KEY (`admin`) REFERENCES `users` (`id`) ON DELETE CASCADE
    ) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

ПОЛЬЗОВАТЕЛИ:

CREATE TABLE `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
 `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `encrypted_password` varchar(80) COLLATE utf8_unicode_ci NOT NULL,
 `salt` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
 `facebook_json` varchar(700) COLLATE utf8_unicode_ci DEFAULT NULL,
 `created` datetime DEFAULT NULL,
 `modified` datetime DEFAULT NULL,
 `team` int(11) DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `email` (`email`),
 KEY `users_ibfk_1` (`team`),
 CONSTRAINT `users_ibfk_1` FOREIGN KEY (`team`) REFERENCES `teams` (`id`) ON DELETE SET NULL ON UPDATE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=168 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

Всякий раз, когда я делаюbin / cake bake создает все классы, но не создает ассоциаций.Вот моя часть моего командного объекта, в которой есть int $ admin, а не пользовательский объект ...

 * @property int $id
 * @property string $joiningID
 * @property string $name
 * @property int $admin
 * @property \Cake\I18n\FrozenTime $created
 * @property \Cake\I18n\FrozenTime $modified

1 Ответ

0 голосов
/ 02 октября 2018

Я предполагаю, что вы хотите использовать bin\cake bake для генерации модели, представлений и контроллеров.

CakePHP предполагает, что внешние ключи соответствуют следующему соглашению: <singularized version of the table name>_id.Таким образом, в вашем случае вы должны переименовать ваш team внешний ключ в team_id, и отношения должны быть правильно обнаружены.

Таким образом, ваша user сущность будет иметь отношение ownTo с таблицей teams.Затем CakePHP создаст переменную team в вашей сущности для связи со связанной сущностью team.

См .: https://book.cakephp.org/3.0/en/orm/associations.html

...