2017-02-17 15 views
1

В Laravel у меня есть Eloquent Model Person и функция getSomestringFromPerson(), которая работает с Model Person и возвращает строку. Теперь у меня есть запрос AJAX, ответ которого представляет собой сборник Лица. Пока я не знаю, что делать.Функция Retrieve Eloquent Model в JavaScript

Теперь, в JavaScript, я хотел бы показать результат getSomestringFromPerson() за каждый Person в ответе. Возможно ли это? Если да, то как? Или мне нужно запустить функцию в контроллере и включить результат в ответ AJAX? (Это выглядит немного громоздким для меня ...)

+0

Что делает getSomestringFromPerson()? – jackel414

+2

@ jackel414 "function getSomestringFromPerson(), который работает с персонажем модели и возвращает строку« Он делает это: P –

+0

@TimLewis Ха-ха, достаточно справедливо. Я пытался разобраться, манипулировал ли он данными или просто разбирал строку (что было бы легко сделать в JS), но я полагал, что это может быть неважно. – jackel414

ответ

3

В контроллере, который обрабатывает запрос AJAX, я полагаю, он получает коллекцию People как что-то вроде этого (на минимум):

public function handleAjax(Request $request){ 
    $people = People::get(); 

    return response()->json(["people" => $people], 200); 
} 

и тогда в ваших JS функции для обработки ответа:

$.get(URL, function(data){ 
    console.log(data); // Collection (js object) of `People` models. 
}); 

в вашей handleAjax функции вы бы цикл по каждому из вашей People и присвоить свойство удерживать значение $person->getSomestringFromPerson():

foreach($people AS $person){ 
    $person->someString = $person->getSomestringFromPerson(); 
} 

Затем в вашем Javascript коде, вы сможете получить к нему доступ, как так:

for(var person in data.people){ 
    console.log(data.people[person].someString); // Should return the expected value of `$person->getSomestringFromPerson();` as defined in your function. 
} 

Оттуда, вы должны быть в состоянии сделать все остальное, что вам нужно сделать с вашим data.people объектом.

+0

ОК. Вот что я имел в виду: «Запустите функцию в контроллере и включите результат в ответ AJAX» –