我有文件txt(data.txt),其值为:
{"id":"1","title":"first Testing","completed":"Yes"}
{"id":"2","title":"Second Testing","completed":"no"}
{"id":"3","title":"Third Testing","completed":"no"}
表格数据包含字段id
,title
和completed
..
如何使用laravel 5.2将data.txt中的所有值输入到我的表(数据)中?
先谢谢..抱歉我的英文不好..
答案 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);
使用查询构建器
DB::table('data')->insert($arrays);
答案 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);