Пользовательская JSON структура ответа в Laravel - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть форма заявки, текстовые данные которой хранятся в одной таблице. Допустим, таблица A (только одна запись). Вложения хранятся в таблице B, в которой есть несколько записей (поскольку пользователь может добавить несколько вложений), и на них ссылается номер приложения.

Я хочу отправить данные в виде ответа JSON, что Я делаю через пункт leftJoin. Я заметил, что данные из таблицы A циклически повторяются до тех пор, пока не будет использована таблица B.

JSON sample:

{
    "id": 1,
    "BR_ID": 5,
    "ClientID": 237,
    "SLT_CODE": 12,
    "PURPOSE": 1,
    "PAMT": "100,000.00",
    "TERMS": 36,
    "PPMT_MODE": 4,
    "PPMT_MFAC": 0,
    "PPMT_MOD2": 4,
    "INT_RATE": 12,
    "PEN_RATE": 24,
    "OL_TEMP_APP_NO": "04152020566167",
    "APPLICATION_NO": null,
    "ActivityListID": 1,
    "DateRequested": "2020-04-15 14:22:36",
    "DateApproved": null,
    "ClientRemarks": "Every fight needs mending\nEvery start has an end\nLike the sunrise and the sunset\nThat's just how it is",
    "FilePath": "C:\\Users\\Personal\\laravel\\storage\\app\\public\\documents\\04152020566167.20200221_141512.jpg",
    "AttachmentName": "04152020566167.20200221_141512.jpg",
    "created_at": null,
    "updated_at": null
}

В основном все данные по l oop то же самое, за исключением "FilePath" и "AttachmentName", поскольку они являются данными из таблицы B.

В любом случае я могу структурировать свой JSON ответ следующим образом:

{
    "id": 1,
    "BR_ID": 5,
    "ClientID": 237,
    "SLT_CODE": 12,
    "PURPOSE": 1,
    "PAMT": "100,000.00",
    "TERMS": 36,
    "PPMT_MODE": 4,
    "PPMT_MFAC": 0,
    "PPMT_MOD2": 4,
    "INT_RATE": 12,
    "PEN_RATE": 24,
    "OL_TEMP_APP_NO": "04152020566167",
    "APPLICATION_NO": null,
    "ActivityListID": 1,
    "DateRequested": "2020-04-15 14:22:36",
    "DateApproved": null,
    "ClientRemarks": "Every fight needs mending\nEvery start has an end\nLike the sunrise and the sunset\nThat's just how it is",
    "Attachments":
    [
        {
            "FilePath": "C:\\Users\\Personal\\laravel\\storage\\app\\public\\documents\\04152020566167.20200221_141512.jpg",
            "AttachmentName": "04152020566167.20200221_141512.jpg",
        },
        {
            "FilePath": "C:\\Users\\Personal\\laravel\\storage\\app\\public\\documents\\04152020566167.20200228_170949.jpg",
            "AttachmentName": "04152020566167.20200228_170949.jpg"
        }
    ]
    "created_at": null,
    "updated_at": null
}

Это мой запрос:

$newLoans = Loans::
where('tblloanapp.ActivityListID', 1)
->leftJoin('tblattachments', 'tblattachments.OL_TEMP_APP_NO', '=', 'tblloanapp.OL_TEMP_APP_NO')
->get();
return response()->json($newLoans);

1 Ответ

0 голосов
/ 17 апреля 2020

Код модели

class Loans extends Model
    {
        public function attachments(){
            return $this->hasMany('App\Models\Attachments','application_id','id');
           //params: model name, reference column(foreign key), column from this table
        }    
    }

Контроллер

Loans::with('attachments')->where('tblloanapp.ActivityListID', 1)->get();

Надеюсь, это поможет. Дайте мне знать, если это не сработает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...