2014-10-08 46 views
0

我正在和laravel 4一起工作,但我不确定最佳做法 - 将Eloquent对象直接传递给视图还是最好使用toArray方法它通过之前呢?传递laravel orm来查看

例如,这样的:

public function index() 
{ 
    $users = Users::all(); 
    return View::make('users.index', array('users' => $users)); 
} 

或本:

public function index() 
{ 
    $users = Users::all()->toArray(); 
    return View::make('users.index', array('users' => $users)); 
} 

或别的东西完全?

+0

我会建议使用主持人,将包裹你想传递到视图的数据。那么它是什么并不重要(Eloquent/Array/StdObject),并且你的视图并不与它们获得的类型紧密相关。如果您想更改此类型,只需调整演示者,并保持模板不变。 – 2014-10-08 08:07:25

回答

1

发送视图只是对象是完全可以接受的,是什么在大多数情况下鼓励。

return View::make('users.index')->with(array('users' => $users)); 
1

我认为从对象创建一个数组并将其包装到另一个传递给视图是一个开销,当您可以直接将该对象传递给视图时。

尝试通过

return View::make('users.index')->with('users', $users); 
+0

@ mithunsatheesh--谢谢,但是我没有把数据传到视图的问题 - 我只是问最好的做法是:先发送ORM对象还是先转换成数组。 – user101289 2014-10-08 03:48:38

+0

你不需要转换。你可以直接传递这个对象。那么为什么你需要中间的类型转换? – mithunsatheesh 2014-10-08 03:49:42

1

你应该使用:

$users = Users::all(); 
return View::make('users.index')->with(array('users' => $users)); 

甚至

return View::make('users.index')->with(array('users' => Users::all())); 
在这种情况下

。您不需要将您的对象转换为数组。在你看来(无论是否是Blade),你可以显示对象属性而不是数组元素,这样做确实很好。此外,你也可以使用accessor如果你有任何设置,如果你将对象转换为数组,你将无法做到这一点