在 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 检索每个用户的特定数据

使用 eloquent 从多个连接中检索数据

Laravel Eloquent - 从相关模型中检索特定列

使用 keyby 收集方法检索 eloquent api 资源

Vue 2 Laravel 5.3 Eloquent 无法从对象中检索数据

当主键为 varchar 时,无法从 Laravel 的 Eloquent 中检索列值