在JavaScript中检索Eloquent Model函数

时间:2017-02-17 21:41:39

标签: javascript ajax laravel eloquent

在Laravel中,我有一个Eloquent Model Person和一个函数getSomestringFromPerson(),它在Model Person上运行并返回一个字符串。现在我有一个AJAX请求,其响应是人员的集合。直到这里,我知道该怎么做。

现在,我想在JavaScript中为响应中的每个getSomestringFromPerson()显示Person的结果。 那可能吗?如果有,怎么样?或者我是否必须在Controller中运行该函数并将结果包含在AJAX响应中? (这对我来说看起来有点麻烦......)

1 个答案:

答案 0 :(得分: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.
}

从那里开始,你应该能够做你需要做的任何其他事情。{/ 1}}对象。