doufei4418 2016-03-09 17:54
浏览 119
已采纳

Laravel雄辩的foreach循环

I am having a foreach loop that goes through an array, and saves data with eloquent. And it works fine when it is like this:

foreach($questions['questions'] as $question) {

    $questionObject = Question::create([
      'external_id' => $question['id'],
      'text' => $question['question_text'],
      'type' => $question['question_type'],
      'image' => (array_key_exists('question_image', $question)) ?
          $question['question_image'] : ''
    ]);

}

But when I add if condition I get undefined variable question error.

foreach($questions['questions'] as $question) {

    if(!$question = Question::where('id', $question['id'])->where(
        function($query){
            $query->where('updated_at','<', $question['updated']);
        }})->first()) {

        $questionObject = Question::create([
            'external_id' => $question['id'],
            'text' => $question['question_text'],
            'type' => $question['question_type'],
            'image' => (array_key_exists('question_image', $question)) ?
                $question['question_image'] : ''
        ]);
    } else {
        return 'Question: '.$question['external_id'].' already exist.';
    }
}

If any could help me with that, would very much appreciate that, thanks in advance!

  • 写回答

2条回答 默认 最新

  • douhuocuo9012 2016-03-09 17:59
    关注

    You are not injecting $question into your callback function. You need to use the use keyword:

    if(!$question = Question::where('id', $question['id'])->where(function($query) use ($question) { $query-  >where('updated_at','<', $question['updated']); })->first()) {
    

    Notice I added the use ($question) bit after function($query)

    This allows $question to be accessed within the scope of the callback.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式