cakephp 3属于Stomany赢得了任何结果
我有以下表
用户 我和公司
有很多命名为users_companies的表
在我拥有的用户表上
$this->belongsToMany('Companies', [
'targetForeignKey' => 'company_id',
'foreignKey' => 'user_id',
'joinTable' => 'users_companies',
]);
:但是
$result = $this->find('all', array(
'conditions' => array(
'Users.id' => 1,
),
))->contain(['Roles', 'Companies']);
这样做并没有为许多公司带来很多东西。
在查询。log上,我看到了:
SELECT
UsersCompanies. ID AS "Companies_CJoin__id",
UsersCompanies.user_id AS "Companies_CJoin__user_id",
UsersCompanies.company_id AS "Companies_CJoin__company_id",
Companies. ID AS "Companies__id",
Companies. NAME AS "Companies__name",
Companies.user_id AS "Companies__user_id",
Companies.created AS "Companies__created",
Companies.modified AS "Companies__modified",
Companies.reason_type AS "Companies__reason_type",
Companies.fantasy_name AS "Companies__fantasy_name",
Companies.document_type AS "Companies__document_type",
Companies.document_id AS "Companies__document_id",
Companies.avatar AS "Companies__avatar"
FROM
companies Companies
INNER JOIN users_companies UsersCompanies ON Companies. ID = (UsersCompanies.company_id)
WHERE
(
UsersCompanies.user_id IN (1)
AND Companies. ID = NULL
)
我想知道我在做什么错,因为在Where子句中,它添加了Companies.ID = null。因此,它不会带来公司。
I have the following tables
Users
Companies
and i have a Many to Many table named users_companies
On the Users table i have:
$this->belongsToMany('Companies', [
'targetForeignKey' => 'company_id',
'foreignKey' => 'user_id',
'joinTable' => 'users_companies',
]);
But doing
$result = $this->find('all', array(
'conditions' => array(
'Users.id' => 1,
),
))->contain(['Roles', 'Companies']);
It doesn't bring anything on the Companies Many to Many.
On the query.log i see this:
SELECT
UsersCompanies. ID AS "Companies_CJoin__id",
UsersCompanies.user_id AS "Companies_CJoin__user_id",
UsersCompanies.company_id AS "Companies_CJoin__company_id",
Companies. ID AS "Companies__id",
Companies. NAME AS "Companies__name",
Companies.user_id AS "Companies__user_id",
Companies.created AS "Companies__created",
Companies.modified AS "Companies__modified",
Companies.reason_type AS "Companies__reason_type",
Companies.fantasy_name AS "Companies__fantasy_name",
Companies.document_type AS "Companies__document_type",
Companies.document_id AS "Companies__document_id",
Companies.avatar AS "Companies__avatar"
FROM
companies Companies
INNER JOIN users_companies UsersCompanies ON Companies. ID = (UsersCompanies.company_id)
WHERE
(
UsersCompanies.user_id IN (1)
AND Companies. ID = NULL
)
I'm wondering what i'm doing wrong because on the Where clause, it adds Companies.id = NULL. Because of that , it won't bring the Companies.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我留下了一些可以帮助您的步骤:
您是否手动创建了这些模型?
烘焙控制台可以帮助减少错误。
应命名加入表
compission_users
而不是users_companies
。您可以阅读数据库约定。 >检查您的
userscompaniestable.php
(应该是CompaniesSustable.php
如果您在步骤2上接受了我的建议)。它应该看起来像:
I left some steps that could help you:
did you create these models manually?
The bake console could help to reduce errors.
Join table should be named
companies_users
instead ofusers_companies
. You can read the Database Conventions.Check your
UsersCompaniesTable.php
(it should beCompaniesUsersTable.php
if you accepted my suggestion on step 2).It should look like: