在laravel 4.1中,当我对一个集合进行分页时,我无法在没有->toArray()
的情况下print_r或var_dump该集合。
我只是得到一张白色的死亡屏幕wsod
。
使用Eloquent和QueryBuilder
我遇到了同样的问题示例控制器
public function index()
{
$products = $this->product->with('category')->paginate(5);
return View::make('admin.products.index', compact('products'));
}
示例视图不起作用
<pre><?php print_r($products); ?></pre>
示例视图是否有效
<pre><?php print_r($products->toArray()); ?></pre>
我得到的唯一反馈来自我的laravel.log
文件
[2014-01-27 14:50:34] production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Allowed memory size of 134217728 bytes exhausted (tried to allocate 130023424 bytes)' in /Applications/AMPPS/www/testapp.lar/app/storage/views/18e32e837eb584960d223cd8728fd06e:38
Stack trace:
#0 [internal function]: Illuminate\Exception\Handler->handleShutdown()
#1 {main} [] []
是否有人知道这种大量内存消耗或如何修复会发生什么?
答案 0 :(得分:0)
当你print_r($产品)时,你实际上是在打印Laravel用来查询和获取数据的大量对象。你基本上会得到大量的文本,这显然会压倒你的机器。你不需要/想要那个。
你想迭代$ products集合,让Laravel神奇地返回值。
foreach ( $products as $v ) {
echo $v->product_name;
}
如果您更喜欢使用数组,那么您可以将$ products集合转换为数组并迭代它。
$products = $products->toArray();
foreach ( $products['data'] as $v ) {
}
将分页集合转换为数组时,数组结构如下,因此对上面的['data']的引用。
阵 ( [total] =&gt; ... [per_page] =&gt; ... [current_page] =&gt; ... [last_page] =&gt; ... [from] =&gt; ... [to] =&gt; ... [data] =&gt;阵列(...) )