代码之家  ›  专栏  ›  技术社区  ›  Shafi

向Eloquent集合添加新属性

  •  5
  • Shafi  · 技术社区  · 7 年前

    正在尝试将新属性添加到现有集合并访问该集合。

    我需要的是:

    $text = Text::find(1);  //Text model has properties- id,title,body,timestamps
    $text->user = $user;
    

    并通过访问用户, $text->user .

    探索文档,我发现 put , prepend , setAttribute 方法。

    $collection = collect();
    $collection->put('a',1);
    $collection->put('c',2);
    echo $collection->c; //Error: Undefined property: Illuminate\Support\Collection::$c
    

    $collection = collect();
    $collection->prepend(1,'t');
    echo $collection->t = 5; //Error: Undefined property: Illuminate\Support\Collection::$t
    

    $collection = collect();
    $collection->setAttribute('c',99); // Error: undefined method setAttribute
    echo $collection->c;
    

    有什么帮助吗?

    1 回复  |  直到 7 年前
        1
  •  5
  •   Marcin Nabiałek    7 年前

    $text = Text::find(1);  //Text model has properties- id,title,body,timestamps
    $text->user = $user;
    

    这里没有任何集合,只有一个对象。

    但让我们看看:

    $collection = collect();
    $collection->put('a',1);
    echo $collection->c; //Error: Undefined property: Illuminate\Support\Collection::$c
    

    你正在接受 c 你没有这样的元素。你应该做的是在 a

    echo $collection->get('a');
    

    或者像这样使用阵列访问:

    echo $collection['a'];
    

    setAttribute 方法。有 集合属性 基于雄辩模型的方法。