Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel模型解析数组_Laravel - Fatal编程技术网

Laravel模型解析数组

Laravel模型解析数组,laravel,Laravel,我的数据库中有一个对象,我正试图在模型中检索该对象并进行解析以在blade模板中显示文本。我不太确定如何正确解析它。多谢各位 public function getStep1() { $step1 = $this->details()->get(); foreach($step1 as $step1) { $step1 = $step1->step_1; return $step1; } } 这让我得到了下

我的数据库中有一个对象,我正试图在模型中检索该对象并进行解析以在blade模板中显示文本。我不太确定如何正确解析它。多谢各位

public function getStep1()
{
    $step1 = $this->details()->get();

    foreach($step1 as $step1)
    {
        $step1 = $step1->step_1;
        return $step1;
    }  
}
这让我得到了下面的输出,我不知道如何解析。我尝试了$step1[0],但这只给了我一个[0]的答案

[["$50,000-$100,000","More than $100,000"]]
我的刀片模板就是这个

{{ $question->getStep1() }}
谢谢你的帮助

更新:

当我进行var_转储时,它会说我的“步骤”存储为字符串。这就是导致问题的原因吗?我仍然无法进入[]

array (size=9)
      'id' => int 1
      'question_id' => int 55
      'step_1' => string '[["$50,000-$100,000","More than $100,000"]]' (length=43)
      'step_2' => string '[["Step2-option1","Step2-option2","Step2-option3"]]' (length=51)
      'step_3' => string '[["Step3-option2"]]' (length=19)
      'step_4' => null
      'step_5' => null
      'created_at' => string '2018-10-03 12:29:05' (length=19)
      'updated_at' => string '2018-10-03 12:29:05' (length=19)

您可以将结果附加到临时数组,然后返回该数组,而不是返回双数组,请检查示例代码:

public function getStep1()
{
    $tempArr = [];
    $steps = $this->details()->get();

    foreach($steps as $step1)
    {
        $tempArr[] = $step1->step_1;
    }

    return $tempArr;
}
您的模板代码现在应该在我们现在构建的数组上迭代,因此需要foreach。如下所示:

@foreach($question->getStep1() as $step)
// do something with $step
@endforeach

$step1作为$step1将不起作用,因为它们是相同的变量名。将$step1作为$step执行。然后,如果$step是一个数组,则必须在其中执行另一个foreach循环以获取单个数组索引。使用刀片视图中的
代码更新您的问题
您是试图获取步骤列表还是仅获取步骤1?我不确定您的问题从这次更新中,我得到了错误“为foreach()提供的参数无效”。我只是想得到“(“$50000-$100000”,“超过$100000”)。谢谢。然后您可以使用$step1[0][0]和$step1[0][1]访问它
public function getStep1()
{
    $steps = $this->details()->get();
    $totalSteps = collect();
    foreach($steps as $step1)
    {
        foreach ($step1 as $step)
        {
             $toalSteps->push($step);
        }

    }
    return $totalSteps;
}