在 JavaScript 中检索 Eloquent 模型函数
Posted
技术标签:
【中文标题】在 JavaScript 中检索 Eloquent 模型函数【英文标题】:Retrieve Eloquent Model function in JavaScript 【发布时间】:2017-07-07 13:37:22 【问题描述】:在 Laravel 中,我有一个 Eloquent Model Person
和一个函数 getSomestringFromPerson()
,它在 Model Person 上运行并返回一个字符串。现在我有一个 AJAX 请求,其响应是一组人员。到这里我才知道该怎么做。
现在,我想在 javascript 中为响应中的每个 Person
显示 getSomestringFromPerson()
的结果。
那可能吗?如果是,如何?还是我必须在控制器中运行该函数并将结果包含在 AJAX 响应中? (这对我来说看起来有点麻烦......)
【问题讨论】:
getSomestringFromPerson() 是做什么的? @jackel414 "函数 getSomestringFromPerson() 对模型人进行操作并返回一个字符串" 它做到了:P @TimLewis 哈哈,很公平。我试图弄清楚它是在操作数据还是只是解析一个字符串(这在 JS 中很容易做到),但我认为这可能无关紧要。 【参考方案1】:在处理 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
对象执行您需要执行的任何其他操作。
【讨论】:
好的。这就是我所说的“在控制器中运行函数并将结果包含在 AJAX 响应中”以上是关于在 JavaScript 中检索 Eloquent 模型函数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 中使用 eloquent 检索每个用户的特定数据
Laravel Eloquent - 从相关模型中检索特定列
使用 keyby 收集方法检索 eloquent api 资源