簡體   English   中英

Laravel5使用JSON和Seeder來填充數據庫

[英]Laravel5 Using JSON & Seeder to feed database

我試圖使用laravel的有用的種子功能來用自定義數據填充表。 而不是使用Seeder來使用Faker Im。 因此,我創建了一個:

  1. “ / json /”文件夾,然后將我的JSON數據文件放在其中。
  2. 最后,在播種器中,我將數據映射到JSON對象屬性。

這是我的代碼。

<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;

class JsonTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $json = File::get("/json/cell-1.json");
        $data = json_decode($json);
        $array1 = $data->toArray();
        foreach ($array1['products'] as $obj) {
            DB::table('products')->insert(array(
                'id' => $obj->id,
                'name' => $obj->productName,
                'sku' => $obj->productSku
            ));
            foreach ($data['relatedProducts'] as $obj) {
                DB::table('products_related')->insert(array(
                    'sku' => $obj->sku
                ));
            }
        }
    }
}

但是我收到許多不同的錯誤,例如:

  • 調用未定義的方法stdClass :: toArray()

  • 不能將stdClass類型的對象用作數組(如果我不使用$ array1 = $ data-> toArray();並直接使用$ data。

任何幫助表示贊賞。

json_decode默認會返回一個對象。 如果要使用數組,只需使用$assoc = true

$data = json_decode($json, true);

從文檔:

ASSOC

如果為TRUE,則返回的對象將轉換為關聯數組。

http://php.net/json_decode

$ data是一個普通的對象,而不是laravel集合,因此它上面沒有toArray。 您可以通過以下操作將對象類型轉換為數組

$array1 = (array) $data;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM