【问题标题】:Can't access relationships with appServiceProvider无法访问与 appServiceProvider 的关系
【发布时间】:2018-12-18 03:13:46
【问题描述】:

在我的标题中,我需要使用一些关系。我在 appserviceprovider 中定义了变量。像这样:

$v_categories = Category::where('parent_id', $v_group->id)->orderBy('order', 'asc')->get();
$view->with('categories', $v_categories);

当我将 foreach 与“类别”一起使用时,它的工作就像一个魅力。 但是当我尝试将它与关系一起使用时,它会引发异常。

    Exception
Property [children] does not exist on this collection instance.

这是我的关系:

public function children()
{
    return $this->hasMany('App\Category', 'parent_id');
}

我的问题是如何在刀片中使用子功能和“类别”雄辩(来自 appServiceProvider)? 这儿存在一个问题。但我想不通为什么?任何帮助都会很棒。提前致谢。

【问题讨论】:

  • 这是因为 $categories 是一个集合(即使只是一个项目,由于是 hasMany 关系),您需要在视图中循环它们或使用 @在您的服务提供商中使用 987654326@ 而不是 get()(如果您只期待一个)。
  • 但我需要使用所有类别。对于每个类别,我都需要使用儿童功能并获得所有儿童。首先不是我想的解决方案。
  • 在这种情况下,您需要遍历视图中的所有类别 :)
  • 现在我明白了。非常感谢:)
  • 太棒了 :) 我已将其添加为答案。可以的话请接受

标签: laravel eloquent relationship


【解决方案1】:

这是因为您的 hasMany 关系与 get() 组合返回一个 Collection 实例,其中包含 Category 项目的数组。

因此,您需要遍历这些以单独解决它们。

在你看来,尝试这样的事情:

@foreach ($categories as $category)
    @foreach ($category->children as $child_category)
        {{ $child_category->name }}
    @endforeach
@endforeach

【讨论】:

    猜你喜欢
    • 2015-10-13
    • 2017-10-09
    • 2020-12-13
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2020-02-08
    • 1970-01-01
    相关资源
    最近更新 更多