Php 推动多对多关系不起作用

Php 推动多对多关系不起作用,php,mysql,propel,Php,Mysql,Propel,我是一个推进新手,遇到了一个与推进多对多关系相关的问题。 我有两个标签。 用户: 我可以成功获取所有用户。但是,当我尝试获取与公司相关的所有用户时 $user = UserQuery::create()->filterByCompany($company)->find(); 我没有任何用户。我还检查了生成的sql,它只有单向关系 CREATE TABLE `users_companies`( `user_id` INTEGER NOT NULL, `company_id` INTE

我是一个推进新手,遇到了一个与推进多对多关系相关的问题。 我有两个标签。 用户:

我可以成功获取所有用户。但是,当我尝试获取与公司相关的所有用户时

$user = UserQuery::create()->filterByCompany($company)->find();
我没有任何用户。我还检查了生成的sql,它只有单向关系

CREATE TABLE `users_companies`(
`user_id` INTEGER NOT NULL,
`company_id` INTEGER NOT NULL,
`created_at` DATETIME,
`updated_at` DATETIME,
PRIMARY KEY (`user_id`,`company_id`),
INDEX `users_companies_FI_1` (`company_id`)) ENGINE=MyISAM;

有人能指出我做错了什么吗?

您使用的ENGINE=MyISAM不支持外键。也许这与此有关

确保
build.properties
包含以下内容

; mysql options
propel.mysql.tableType = InnoDB
我生成的“桥接”表sql如下所示

CREATE TABLE `users_companies`
(
    `user_id` INTEGER NOT NULL,
    `company_id` INTEGER NOT NULL,
    `created_at` DATETIME,
    `updated_at` DATETIME,
    PRIMARY KEY (`user_id`,`company_id`),
    INDEX `users_companies_FI_1` (`company_id`),
    CONSTRAINT `users_companies_FK_1`
        FOREIGN KEY (`company_id`)
        REFERENCES `companies` (`id`),
    CONSTRAINT `users_companies_FK_2`
        FOREIGN KEY (`user_id`)
        REFERENCES `users` (`id`)
) ENGINE=InnoDB;
如果所有这些都没有帮助,请确保您使用的是最新的推进(1.6.8)


我还有一个生成的BaseUser::getCompanys()和BaseCompany::getUsers()。

我相信您的语句
我也检查了生成的sql,它只有单向关系
为false。它有两种关系;它只是没有设置任何外键。MyISAM支持外键,但不支持约束或触发器。我不认为答案需要否决票,因为siwtching可能会让他的代码启动,但请更新内容以反映这一点。我相信MyISAM不支持外键作为状态(至少对于版本来说,答案并非完全错误,只是措辞上的问题。您可以在MyISAM表中添加外键,而不是约束或触发器。这是有区别的。
$user = UserQuery::create()->filterByCompany($company)->find();
CREATE TABLE `users_companies`(
`user_id` INTEGER NOT NULL,
`company_id` INTEGER NOT NULL,
`created_at` DATETIME,
`updated_at` DATETIME,
PRIMARY KEY (`user_id`,`company_id`),
INDEX `users_companies_FI_1` (`company_id`)) ENGINE=MyISAM;
; mysql options
propel.mysql.tableType = InnoDB
CREATE TABLE `users_companies`
(
    `user_id` INTEGER NOT NULL,
    `company_id` INTEGER NOT NULL,
    `created_at` DATETIME,
    `updated_at` DATETIME,
    PRIMARY KEY (`user_id`,`company_id`),
    INDEX `users_companies_FI_1` (`company_id`),
    CONSTRAINT `users_companies_FK_1`
        FOREIGN KEY (`company_id`)
        REFERENCES `companies` (`id`),
    CONSTRAINT `users_companies_FK_2`
        FOREIGN KEY (`user_id`)
        REFERENCES `users` (`id`)
) ENGINE=InnoDB;