代码之家  ›  专栏  ›  技术社区  ›  aamir

如何为Laravel Mass updateOrCreate()准备PHP多维数组?

  •  1
  • aamir  · 技术社区  · 8 年前

    我正在尝试大规模插入到Laravel(5.6)模型中。阵列准备有问题;它返回

    lluminate \ Database \ QueryException (42S22)
    SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' 
    (SQL: insert into `_geolocation` (`0`, `1`, `2`, `3`, `4`) values 
    (Manchester,+UK, Manchester,+UK, Manchester,+UK, Manchester,+UK, 
    Manchester,+UK))
    

    我正在生成如下数组:

    if($outputTo->status->message == "OK"){ // if
        for ($i = 0; $i < $outputTo->total_results; $i++) {
            //print_r($outputFrom->results[$i]->geometry->lat);
            $geodata_b [] =[
                $formattedAddrTo,
                $outputTo->results[$i]->formatted,
                $outputTo->results[$i]->geometry->lat,
                $outputTo->results[$i]->geometry->lng,
                ];
        }
    }
    

    这是我的数组的输出;

        array:5 [▼
      0 => array:4 [▼
        0 => "Manchester,+UK"
        1 => "Manchester, Greater Manchester, England, United Kingdom"
        2 => 53.4791301
        3 => -2.2441009
      ]
      1 => array:4 [▼
        0 => "Manchester,+UK"
        1 => "Chapel Street Primary School, Chapel Street, Manchester M19 3GH, United Kingdom"
        2 => 53.443957
        3 => -2.1858478
      ]
      2 => array:4 [▼
        0 => "Manchester,+UK"
        1 => "The Manchester, Lytham Road, Bispham FY1 6AH, United Kingdom"
        2 => 53.8067298
        3 => -3.0549142
      ]
      3 => array:4 [▼
        0 => "Manchester,+UK"
        1 => "The Manchester, Bromsgrove Road, Bromsgrove B62 0HH, United Kingdom"
        2 => 52.4003403
        3 => -2.0539726
      ]
      4 => array:4 [▼
        0 => "Manchester,+UK"
        1 => "The Harlequin, Spitalfields, Sheffield S3 8GG, United Kingdom"
        2 => 53.3884864
        3 => -1.4663405
      ]
    ]
    

    插入代码;

        $geolCache = \App\Geolocation::updateOrCreate([$geodata_b]);
    

    我的模型;

    protected $fillable = ['adrr','faddr','lat','lng'];
    

    有谁能帮我解决这个问题吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Bilal Maqsood    8 年前

    您没有跟踪键值对。试试这个代码

    if($outputTo->status->message == "OK"){ // if
        for ($i = 0; $i < $outputTo->total_results; $i++) {
            $geodata_b [] = [
                'adrr' => $formattedAddrTo,
                'faddr' => $outputTo->results[$i]->formatted,
                'lat' => $outputTo->results[$i]->geometry->lat,
                'lng' => $outputTo->results[$i]->geometry->lng,
                ];
        }
    }