Search code examples
laraveleloquentlaravel-8eloquent-relationship

How to define the following relationship


I am developing a p2p app with laravel. I have two tables namely users and loans.

Firstly, a user can be a lender or borrower.

Then users can have multiple loans and multiple loans belong to multiple users.

Also, a loan can belong to one borrower and also to multiple lenders.

To explain it further, the loan record will be created by the borrower(or the user). Then the system will distribute the loan and assign it to multiple lenders.

Example: Let's say, one borrower wants a loan of 3000. Our system will distribute the loan as 2000 and 1000 (or 1500 and 1500, or 2500 and 500, etc.). Then assign it to two lenders.

Now it could be more lenders or bigger amounts.

So how can I define something like this with laravel eloquent?

Here's what I thought of till now.

  1. Users and loans will have a many-to-many relationship.

  2. Loans table will have a lender_data column which will be an array that contains lender_id and amount.

But I can't really figure out a way to fetch all the loans of a single lender. So how can I do that?

That's a lot of words. Thank you for reading.


Solution

  • First of all, this question is quite vague and doesn't show any code which I think all questions should. Its harder to answer questions like this that don't necessarily have predefined answers.

    Personally, I'd look into intermediate table models:

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

    That way you can have a Lenders table, a Loan table, a Users table, and this "in between" table that could be something like a LoanAmount table. The LoanAmount table is mostly a pivot table (allowing the many to many relationship between Lenders and Loans), however it can also store data like:

    loan_id   lender_id   amount
    1         1           1000
    1         2           1000
    

    Then the loan table would just be

    user_id   amount
    1         2000
    

    So a User can have many Loans, but it's the Loans that can have many LoanAmounts.