cakephp 3属于Stomany赢得了任何结果

发布于 2025-01-21 17:46:27 字数 1505 浏览 4 评论 0原文

我有以下表

用户 我和公司

有很多命名为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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

作业与我同在 2025-01-28 17:46:27

我留下了一些可以帮助您的步骤:

  1. 您是否手动创建了这些模型?

    烘焙控制台可以帮助减少错误。

  2. 应命名加入表compission_users而不是
    users_companies。您可以阅读数据库约定。 >

  1. 检查您的userscompaniestable.php(应该是
    CompaniesSustable.php如果您在步骤2上接受了我的建议)。
    它应该看起来像:

      $ this->
        'foreferkey'=> '用户身份',
        'toctype'=> '内',
    );
    $ this->
        'foreferkey'=> “ company_id',
        'toctype'=> '内',
    );
     

I left some steps that could help you:

  1. did you create these models manually?

    The bake console could help to reduce errors.

  2. Join table should be named companies_users instead of
    users_companies. You can read the Database Conventions.

  1. Check your UsersCompaniesTable.php (it should be
    CompaniesUsersTable.php if you accepted my suggestion on step 2).
    It should look like:

    $this->belongsTo('Users', [
        'foreignKey' => 'user_id',
        'joinType' => 'INNER',
    ]);
    $this->belongsTo('Companies', [
        'foreignKey' => 'company_id',
        'joinType' => 'INNER',
    ]);
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文