将JSON类型数据输入到Laravel 5.2

时间:2016-05-30 16:31:06

标签: json laravel-5.2

我有文件txt(data.txt),其值为:

{"id":"1","title":"first Testing","completed":"Yes"}

{"id":"2","title":"Second Testing","completed":"no"}

{"id":"3","title":"Third Testing","completed":"no"}

表格数据包含字段idtitlecompleted ..

如何使用laravel 5.2将data.txt中的所有值输入到我的表(数据)中?

先谢谢..抱歉我的英文不好..

3 个答案:

答案 0 :(得分:2)

读取文件并将其转换为 PHP数组

 $arrays = json_decode(file_get_contents('data.txt'), true);

然后用简单的foreach

foreach($arrays as $array) {
   $myObject = new Model();
   $myObject->id = $array['id'];
   $myObject->title = $array['title'];
   $myObject->completed = $array['completed'];
   $myObject->save();
}

如果你定义了$fillable属性

,你可以做到直接
foreach($arrays as $array)
   Model::create($array);

Eloquent: Mass Assignment

使用查询构建器

DB::table('data')->insert($arrays);

Query Builder: Insert

答案 1 :(得分:0)

看到你data.txt示例,似乎值不是格式化的JSON。要首先处理此类价值,您需要使用explode \n作为分隔符json_decode数据。然后过滤它以去除所有空元素,在使用$data = file_get_contents('path/to/data.txt'); $data = array_filter(explode("\n", $data)); $data = array_map(function ($item) { return json_decode($item, true); }, $data); // Insert to your database table DB::table('mytable')->insert($data); 映射每个项目之后,这应该有效:

data.txt

如果$data = file_get_contents('path/to/data.txt'); // Insert to your database table DB::table('mytable')->insert($data); 包含格式正确的JSON,那么您可以跳过爆炸,过滤和映射步骤:

updateOrCreate()

如果您不止一次这样做,建议使用雄辩的模型// Uses $data value from the first example foreach($data as $row) { MyModel::updateOrCreate(['id' => $row['id'], $row); } 方法来防止重复的行。这是一个例子:

data.txt

如果您想要使用Laravel的方式(Filesystem),那么这只是一个补充。将storage/app放入Storage文件夹,然后使用$data = Storage::get('data.txt'); $data = array_filter(explode("\n", $data)); $data = array_map(function ($item) { return json_decode($item, true); }, $data); DB::table('mytable')->insert($data); // Or foreach($data as $row) { MyModel::updateOrCreate(['id' => $row['id'], $row); } 外观检索数据。

RewriteBase /~mpnl/

答案 2 :(得分:0)

试试这些代码

在laravel中你可以使用文件系统来获取文件。但这是基本版本。希望这会有所帮助。

$file = fopen("data.txt","r");

while(! feof($file))
  {
    $data = json_decode(fgets($file), true);

    //write your code to Store your data

  }

fclose($file);