当前位置: 首页 > 知识库问答 >
问题:

Corcel:如何在Laravel中的WordPress表之间形成多对多关系?

司徒钱青
2023-03-14

我使用Laravel7和Corcel连接到WordPress安装的数据库。

连接工作正常,到目前为止从WordPress获取数据没有问题:
App\Project::where('id',3)-

在我的WordPress安装中,有一个名为WP project Manager的项目管理插件使用的附加表。我想通过数据透视表(WP-plugin:pm\u-role\u-user)在wordpress表(WP:users)和插件表(WP-plugin:pm\u-projects)之间建立多对多关系。

插件的透视表有四个字段:项目id、角色id、分配人和用户id。它将用户与项目连接起来。

因此,我创建了models项目和Tester(在我的上下文中,用户被视为测试人员),如下所示:

<?php

namespace App;

use Corcel\Model as Model;

class Project extends Model
{

    protected $table = 'pm_projects';

    protected $fillable = [
        'title',
        'description',
        'status',
        'budget',
        'pay_rate',
        'est_completion_date',
        'color_code',
        'order',
        'projectable_type',
        'completed_at',
        'created_by',
        'updated_by',
    ];

    protected $dates = [
        'est_completion_date'
    ];

    public function testers()
    {
        return $this->belongsToMany(Tester::class, 'pm_role_project_users', 'role_project_id', 'user_id');
    }

}
<?php

namespace App;

use Corcel\Model\User as User;

class Tester extends User
{

    public function projects()
    {
        return $this->belongsToMany(Project::class, 'pm_role_project_users', 'user_id', 'role_project_id');
    }

}

当我尝试使用App\Project::where('id',3)获取用户项目时-

带有消息调用未定义的方法照明/数据库/雄辩/生成器::测试器()

我的问题:
如何使用Corcel在Laravel中的WordPress表之间建立多对多连接?


共有1个答案

拓拔嘉颖
2023-03-14

App\Project::其中('id',3)是一个雄辩的查询生成器实例,而不是雄辩的元素。您应该首先使用first()方法,然后使用模型方法/关系。所以代码应该是这样的:

App\Project::where('id',3)->first()->testers()->get();

但它可以很简单(你应该使用这个):

App\Project::where('id',3)->first()->testers;

它将返回项目3中的testers集合。

 类似资料:
  • 我使用的是Laravel 5.4,其模型和表格结构如下: 一个用户可以有多个账户 一个帐号可以被多个用户共享 每个账户有多个持有量 因此,用户通过他们的许多帐户间接拥有许多资产。 我需要帮助在用户模型上定义一个称为“持有量”的关系,以获得适用于用户的所有持有量(基于他们所链接的账户)。 我尝试了很多不同的东西,在谷歌上花了很长时间。我可以接近BelongToMany和hasManyThrough,

  • 作为这个问题的一个例子,让我使用电视节目、电影和演员。每个电视节目和电影都有多个演员,每个演员都在一个或多个电视节目和/或电影中。如果我在他们之间建立一个多态的多对多关系,我似乎可以分别查询一个演员的所有电视节目和所有电影,但尽管我可以用谷歌搜索,我还没有找到一种方法来查询一个演员的所有电视节目和/或电影在一个集合中的联合。这难道不是多对多多态关系的有用之处吗? 如果事实证明这确实是可能的,我可能

  • 我正在做一个小型的laravel项目来实现雄辩的关系,我主要有多个模型(项目、任务、用户、文件等) 一个项目可以分配多个用户,附加多个文件,也可以有多个任务。一个任务可以分配多个用户,也可以分配多个文件,以及多个其他东西。我已经谷歌和实施了hasManyPass,和归属许多关系,但我对关系感到困惑很多。有什么帮助吗? Project.php Task.php User.php 我得到的错误是,当我

  • 如果我尝试以下操作,则页面正在加载: 有以下表格:-用户-user_department-部门 数据透视表用户\u部门有两个外键:-部门\u id-用户\u id 在我的用户模型中: 在我的部门模型中: 顺便说一下:以下代码正在工作: 但是我无法在不破坏我的页面的情况下获得用户的部门。 有什么想法吗?

  • 我有一个医院(点)的空间表,它与(非空间)价表(卷曲、紧急等)具有一对多关系。 医院(id,name,geom);化合价(id,名称,化合价) “name”是公共字段。 如何在PostgreSQL/Postgis中构造一个有效的Geojson,其中每个医院(点)可以有一个或多个价? 我已经尝试了这个查询的一些变体,但是总是给出相同的错误“作为表达式使用的子查询返回了多行”。 非常感谢!

  • 我正在创建一个应用程序,其中用户可以被分配到多个组织,组织可以有多个用户--多对多的关系。 我希望能够这样做:以及 我有表... 我有表... 呃!用户-组织,组织-用户! 和我有数据透视/映射/等。表 表有一个字段和一个字段。 Elecoquent假设并期望-但这不是我为表命名的,也不想重命名。 我设置了以下内容 用户: 然后我测试一下: 并得到以下错误: SQLState[42S02]:找不到