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

LARAVEL:数据透视表上的一对一关系?

斜单鹗
2023-03-14

我想不出如何雄辩地处理这件事。我有一个多对多的关系,需要分配给它一对一的关系。

下面是我设计的最简单形式的基本数据库结构:

ACCOUNTS: id

AGENTS: id

FEES: id

ACCOUNT_AGENT: account_id, agent_id, fee_id

每个帐户都属于多个代理。

每个代理人都有许多账户。

每个Account_Agent(多对多数据透视表)属于收费。

我如何在雄辩的模型中定义第三种关系?

我希望能够获得如下(或类似)的“账户代理”费用:

$account = Account::first();

foreach ($account->agents as $agent) {
  echo $agent->fee;
}

谢谢,希望我的问题很清楚。

共有1个答案

后易安
2023-03-14

请看这里:

https://laravel.com/docs/5.4/eloquent-relationships#many-对许多人来说

向下滚动以定义自定义中间表模型

基本上你要做的就是定义这样一个类:

class AccountAgent extends Illuminate\Database\Eloquent\Relations\Pivot
{
    /**
     * Many:1 relationship with Fee model
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function fee()
    {
        return $this->belongsTo(Fee::class);
    }
}

然后在Account类中定义多:多关系,如下所示:

/**
 * The agents that belong to the account.
 */
public function agents()
{
    return $this->belongsToMany(Agent::class)->using(AccountAgent::class);
}

然后在你的代码中,而不是这样:

foreach ($account->agents as $agent) {
  echo $agent->fee;
}

... 这样做:

foreach ($account->agents as $agent) {
  /** @var Fee $fee_object */
  $fee_object = $agent->pivot->fee;
}

在该循环中,$fee_object属于类Fee(涵盖费用表的模型类),因此您可以echo$fee_object-

 类似资料:
  • 事实上,我的问题很简单,但我找不到任何答案。 我使用的是Laravel Elotent,我有3张桌子: 一个数据透视表叫做: 我已经从我的公司对象中获得了,我正在尝试获取

  • 我有三张桌子: 类别(id、名称) 类别赛(类别赛id,锦标赛id)-- Category是可用类别列表Category_Tornament是管理员配置的类别列表Category_Tornament用户是用户已注册的类别 要获得锦标赛中的所有类别,我可以使用以下工具轻松完成: 在竞赛模型中定义归属关系 我不知道如何定义与上一个表的关系。 我需要的是用户单击几个类别,我可以运行如下操作: 我应该在哪

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

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

  • 您好,当我更新或删除API中的数据时,我需要有关laravel 8多对多关系透视表的帮助。这些是我的文件信息。首先,我创建了两个表:Companies(迁移文件) 联系人(迁移文件) 在此之后,创建透视表company\u contact(迁移文件) 模型如下所示:公司模型 } 联系人模型 } 我的路线文件 我的公司控制人 } 公司存储请求 公司资源 也许有人可以帮助我在公司控制器中编写正确的st

  • 问题内容: 我是一起定义关系和框架的新手,我只是习惯于原始SQL。我做了家庭作业(google + Laravel文档),但是我认为我不太了解它。 以下是相关信息:用户表: 挑战表: User_challenge_links Challenge_sub_categories 所以我的目标..用户->挑战。 关系: 一个用户有许多User_challenge_links 一个User_challen