将 Laravel 集合制作成 angular 数组 (octobercms)

Make a Laravel collection into angular array (octobercms)

我设法解决了一个问题,但我不明白为什么它会起作用,而且看起来有点小问题,所以我想知道是否有人可以解释我。我想从我的文章模型中获取文章并在 angular 中检索它,但我很难从 octobercms 中获取带有 "featured_images" 的子项。我在我的 laravel 控制器中找到了这样的解决方法:

public function test()
{  
    $result = Article::take(4)->get();
    $listarr = array();
    foreach($result as $article) {
        $listarr[] = $article;
        foreach($article->featured_images as $image) {
        }
    }
    return response()->json($listarr);
}

但是如果我删除 foreach($article->featured_images as $image) { } 部分,我不会得到带有 $listarr 的 "featured_images"。如果我 return response()->json($result);

仅使用 $result 不会给我这些键

这就是我想要的:http://pastebin.com/MJvnbrrn

但不是这样,没有"featured_images":http://pastebin.com/1Xa3n9fD

如果我在 $result 和 $article 上执行 forreach 并且仅当我随后使用 foreach($article->featured_images as $image) { } 时,我就会得到我想要的结果。我觉得我很困惑,有一种更优雅的方法,但多维数组对我来说很难。

foreach 调用正在加载关系,因此将其包含在后续的 JSON 数据中。以下调用将使用预加载预加载关系,并应以相同的方式包含它。

Article::with('featured_images')->take(4)->get();

或者您可以使用 "lazy eager loading"

$result = Article::take(4)->get();
$result->load('featured_images');