【问题标题】:laravel loop over collectionlaravel 循环遍历集合
【发布时间】:2014-08-13 20:06:19
【问题描述】:

我有这个代码:

$data = new Restaurant(array('id' => $restaurant_id));
        $data = $data->waitingtimes();
        foreach($data as $oneTime){
            echo $oneTime->value;
        }
exit;

如您所见,我尝试为每个 $data 打印 value 属性,但结果为空。

但是,当我这样做时:

$data = new Restaurant(array('id' => $restaurant_id));
        $data = $data->waitingtimes();
        echo $data->first()->value; exit;

我得到了结果,所以$data 中绝对有值。

我尝试在这里阅读 basecollection 类文档 https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Collection.php

但循环没有什么。

我还在这里阅读了集合类文档http://laravel.com/api/source-class-Illuminate.Database.Eloquent.Collection.html#5-73 但是没有任何关于循环的内容。

【问题讨论】:

  • 嘿?你在$data 中得到了什么?试试dd($data),让我知道输出。
  • $dataQuery 对象,而不是集合。 $data->first() 执行附加了LIMIT 1 的SQL 语句。您需要致电$data->get() 获取实际结果。
  • 那你需要使用get()
  • @WereWolf-TheAlpha in $data->first()->value 我得到了55 这是我数据库中的真正价值,当我这样做时dd($data) 我在浏览器中打印了很长的结果,你想要吗给你?
  • @SergiuParaschiv 好的,我会尝试更新你。

标签: php laravel laravel-4 blade


【解决方案1】:

替换 $data = $data->waitingtimes();由

$data = $data->waitingtimes()->get();

【讨论】:

    【解决方案2】:

    你也可以试试这个:

    $data = Restaurant::find($restaurant_id);
    

    这只会给你一个Restaurant,它是id,如果waitingtimes是一个关系/相关模型,那么你可以试试这个(称为eager loading,比动态调用更好):

    $data = Restaurant::with('waitingtimes')->find($restaurant_id);
    

    然后你可以像这样循环:

    foreach($data->waitingtimes as $waitingtime) {
        echo $waitingtime->value;
    }
    

    【讨论】:

    • 是的,它是一对多的关系。我将在另一个控制器的功能中尝试您的解决方案。 +1 一如既往的感谢
    • 其实eager loading可以让你从n+查询问题中解脱出来。
    • 不客气,但你可以read this
    • 我是 laravel 的新手,我还没有听说过这个 eager_loading。然而,我每天都在学习更多,一旦我需要使用relation 查询,我会阅读它。无论如何,请问您有在视图上使用循环的任何文档吗?我想循环遍历我的 html 视图中的一些变量。
    • loops 部分的templates 上检查它,如果需要,然后用一些相关代码发布另一个问题。
    【解决方案3】:

    $data = $data->waitingtimes();替换为

    $data = $data->waitingtimes()->get();
    

    【讨论】:

    • 是的,非常感谢,一旦系统允许 +1,+1 将接受您的回答
    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 2020-09-10
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    相关资源
    最近更新 更多