首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义以下关系

如何定义以下关系
EN

Stack Overflow用户
提问于 2021-03-24 14:24:19
回答 2查看 63关注 0票数 1

我正在用laravel开发一个p2p应用。我有两张桌子,即用户和贷款。

首先,用户可以是贷款人或借款人。

然后用户可以拥有多个贷款,多个贷款属于多个用户。

此外,一笔贷款可以属于一个借款人,也可以属于多个贷款人。

为了进一步解释,贷款记录将由借款人(或用户)创建。然后,系统将分配贷款,并将其分配给多个贷款人。

比方说,一个借款者想要3000英镑的贷款。我们的系统将把贷款分配为2000和1000 (或1500和1500,或2500和500等)。然后把它分配给两个贷款人。

现在,它可能是更多的贷款人或更大的数额。

那么,我如何用拉拉雄辩来定义这样的东西呢?

到现在为止我是这么想的。

  1. 用户和贷款将有一个多到多的关系.
  2. Loans表将有一个lender_data列,它将是一个数组,包含lender_id和and。

但我真的想不出一种办法来获取单个贷款人的所有贷款。那我该怎么做呢?

这是很多的话。感谢您的阅读。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-24 14:40:41

首先,这个问题相当模糊,没有显示任何代码,我认为所有的问题应该。很难回答这样的问题,这些问题不一定有预先定义的答案。

就我个人而言,我会研究中间表模型:

https://laravel.com/docs/8.x/eloquent-relationships#defining-custom-intermediate-table-models

这样,您就可以拥有一个Lenders表、一个Loan表、一个Users表,以及这个“中间”表,它可能类似于LoanAmount表。LoanAmount表主要是一个支点表(允许贷款人和贷款之间的许多关系),但是它也可以存储数据如下:

代码语言:javascript
复制
loan_id   lender_id   amount
1         1           1000
1         2           1000

那么贷款表就是

代码语言:javascript
复制
user_id   amount
1         2000

所以一个User可以有很多Loans,但是Loans可以有很多LoanAmounts

票数 1
EN

Stack Overflow用户

发布于 2021-03-25 13:31:06

接下来我要说:

代码语言:javascript
复制
class User extends Model
{
    public function loans()
    {
        return $this->belongsToMany(Loan::class)->using(LoanUser::class)->withPivot(['amount', 'percentage']);
    }
}

class Loan extends Model
{
    public function users()
    {
        return $this->belongsToMany(User::class)->using(LoanUser::class)->withPivot(['amount', 'percentage']);
    }
}

class LoanUser extends Pivot
{

    protected $with = [
        'landers',
    ];

    public function landers()
    {
        return $this->belongsToMany(Lander::class)->withPivot(['percentage']);
    }
}

class Lander extends Model
{
    public function loanUsers()
    {
        return $this->belongsToMany(LoanUser::class)->withPivot(['percentage']);
    }
}

在loan_user枢轴表中,您应该创建名为percentage的字段,该字段将从全部数量转移到用户。在LoanUser和Lander lander_loan_user之间的第二个支点中,您还应该需要为每个lander_loan_user关系分配的percentage字段。这将是第二个枢轴表数据。在保存loan_user数据之后,您需要将着陆器附加到第一个枢轴模型(第二个枢轴表不需要每个描述的枢轴模型)。由于有迫切需要加载的登陆器来支点模型,所以当您查询一些用户和他们的贷款时

代码语言:javascript
复制
$user = User::where(['loan.amount' => 3000])->first();
$user->pivot->landers;// will get you related landers

你已经有了第一个枢轴表的全部数量,用同一个表的百分比,你知道用户(借款者)得到了多少,在枢轴与着陆器表的关系中,你会知道每个着陆器从贷款中得到多少。

它就像"T“关系,它的上端是贷款和用户,十字路口是LoanUser支点,字母t的下端(底端)是着陆器。

为了尽可能地避免困难的时间,坚持雄辩的惯例(检查良好实践这里),例如,代替borrower_id调用loan_id,也把支点表改为loan_user (注意支点单数)。

这是从头上写的,没有经过测试,但这是任务可以/应该如何完成的想法/方式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66783121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档