मेरे पास उपयोगकर्ताओं के साथ एक टेबल है और इकाइयों के साथ एक है, प्रत्येक इकाई में एक उपयोगकर्ता हो सकता है। लेकिन चूंकि ऐसी कई इकाइयाँ हैं जिन्हें एक उपयोगकर्ता को सौंपा जा सकता है, अब मैं सभी उपयोगकर्ताओं को उनकी इकाइयों के साथ आउटपुट करना चाहता हूँ। हालांकि, मुझे प्रति उपयोगकर्ता केवल एक इकाई प्रदर्शित होती है।

यूनिट मॉडल

public function user()
{
    return $this->hasOne('App\User', 'id', 'user_id');
}

उपयोगकर्ता मॉडल

public function units()
{
    return $this->belongsTo('App\Unit', 'id', 'user_id');
}

उपयोगकर्ता नियंत्रक

public function api(Request $request)
{
    $user = User::with('units')->all();

    return new UserResource($user->paginate(25);
}

प्रतिक्रिया:

"data": [
        {
            "id": 27,
            "first_name": "My",
            "last_name": "Name",
            "email": "mymail@mail.com",
            "company": "My Company",
            "active": 1,
            "comment": null,
            "created_at": "2020-09-10 06:08:04",
            "updated_at": "2020-09-10 06:08:04",
            "fullname": "My Name",
            "units": {
                "id": 21,
                "title": 21,
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
                "rented": 0,
                "active": false,
                "unit_group_id": 1,
                "user_id": 27,
                "contract_id": null,
                "subject_id": 21,
                "created_at": "2020-08-11 19:18:28",
                "updated_at": "2020-09-10 06:08:04"
            },
        }
    ],

कुछ ऐसा होना चाहिए:

...
"units":
[{
    "id": 20,
    "title": 20,
    "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
    "rented": 0,
    "active": false,
    "unit_group_id": 1,
    "user_id": 27,
    "contract_id": null,
    "subject_id": 21,
    "created_at": "2020-08-11 19:18:28",
    "updated_at": "2020-09-10 06:08:04"
},
{
    "id": 21,
    "title": 21,
    "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
    "rented": 0,
    "active": false,
    "unit_group_id": 1,
    "user_id": 27,
    "contract_id": null,
    "subject_id": 21,
    "created_at": "2020-08-11 19:18:28",
    "updated_at": "2020-09-10 06:08:04"
}]

enter image description here

1
Lukas Niestrat 8 अक्टूबर 2020, 13:18

1 उत्तर

सबसे बढ़िया उत्तर

आप यहां एक से एक संबंध का उपयोग कर रहे हैं। जबकि जैसा कि आपने उल्लेख किया है कि एक उपयोगकर्ता के पास कई इकाइयाँ हो सकती हैं। तब यह एक से अनेक संबंध होने वाला है। इसलिए,

उपयोगकर्ता मॉडल:

public function units()
{
    return $this->hasMany('App\Unit', 'id', 'user_id');
}

यूनिट मॉडल:

public function user()
{
    return $this->belongsTo('App\User', 'id', 'user_id');
}
2
back2Lobby 8 अक्टूबर 2020, 13:27