我正在用laravel开发一个p2p应用。我有两张桌子,即用户和贷款。
首先,用户可以是贷款人或借款人。
然后用户可以拥有多个贷款,多个贷款属于多个用户。
此外,一笔贷款可以属于一个借款人,也可以属于多个贷款人。
为了进一步解释,贷款记录将由借款人(或用户)创建。然后,系统将分配贷款,并将其分配给多个贷款人。
比方说,一个借款者想要3000英镑的贷款。我们的系统将把贷款分配为2000和1000 (或1500和1500,或2500和500等)。然后把它分配给两个贷款人。
现在,它可能是更多的贷款人或更大的数额。
那么,我如何用拉拉雄辩来定义这样的东西呢?
到现在为止我是这么想的。
但我真的想不出一种办法来获取单个贷款人的所有贷款。那我该怎么做呢?
这是很多的话。感谢您的阅读。
发布于 2021-03-24 14:40:41
首先,这个问题相当模糊,没有显示任何代码,我认为所有的问题应该。很难回答这样的问题,这些问题不一定有预先定义的答案。
就我个人而言,我会研究中间表模型:
https://laravel.com/docs/8.x/eloquent-relationships#defining-custom-intermediate-table-models
这样,您就可以拥有一个Lenders表、一个Loan表、一个Users表,以及这个“中间”表,它可能类似于LoanAmount表。LoanAmount表主要是一个支点表(允许贷款人和贷款之间的许多关系),但是它也可以存储数据如下:
loan_id lender_id amount
1 1 1000
1 2 1000那么贷款表就是
user_id amount
1 2000所以一个User可以有很多Loans,但是Loans可以有很多LoanAmounts。
发布于 2021-03-25 13:31:06
接下来我要说:
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数据之后,您需要将着陆器附加到第一个枢轴模型(第二个枢轴表不需要每个描述的枢轴模型)。由于有迫切需要加载的登陆器来支点模型,所以当您查询一些用户和他们的贷款时
$user = User::where(['loan.amount' => 3000])->first();
$user->pivot->landers;// will get you related landers你已经有了第一个枢轴表的全部数量,用同一个表的百分比,你知道用户(借款者)得到了多少,在枢轴与着陆器表的关系中,你会知道每个着陆器从贷款中得到多少。
它就像"T“关系,它的上端是贷款和用户,十字路口是LoanUser支点,字母t的下端(底端)是着陆器。
为了尽可能地避免困难的时间,坚持雄辩的惯例(检查良好实践这里),例如,代替borrower_id调用loan_id,也把支点表改为loan_user (注意支点单数)。
这是从头上写的,没有经过测试,但这是任务可以/应该如何完成的想法/方式。
https://stackoverflow.com/questions/66783121
复制相似问题