手动将项目添加到现有对象[Laravel 5]

Vla*_*kic 11 php arrays collections eloquent laravel-5

这是我尝试做的事情:

$q = Question::where('id',$id -> id)->get();
$q[] = $q->push([ 'test' => true]); 
dd($q);
Run Code Online (Sandbox Code Playgroud)

这将输出:

Collection {#220 ?
  #items: array:3 [?
    0 => Question {#225 ?}
    1 => array:1 [?
      "test" => true
    ]
    2 => null
  ]
}
Run Code Online (Sandbox Code Playgroud)

所以'test' => true将作为一个新密钥附加,但我想插入它,Question所以后者我可以像foreach一样访问它$q -> test

所以这是我想要访问项目的方式:

@foreach($q as $qq)
{{ $qq->test }}
@endforeach
Run Code Online (Sandbox Code Playgroud)

num*_*8er 23

它可以通过使用Eloquent Model(https://github.com/illuminate/database/blob/master/Eloquent/Model.php)的setAttribute()函数来完成. 正如您所看到的,它使用setAttribute()将数据存储在受保护的$属性中,当我们执行$ SomeModel-> some_field时, 它使用magic方法__get()属性数组中按关联方式检索项目. 以下是您的问题的解决方案:


$Question = Question::find($id);
$Question->setAttribute('test', 'blablabla');
Run Code Online (Sandbox Code Playgroud)


Kri*_*ofe 5

除了setAttribute(),您可以使用put()参考这篇文章获取一个项目。而map()对于许多项目,请参阅此职位