2016-05-30 3 views
0

У меня есть текстовый файл (data.txt) с этим значением:Входные данные типа JSON в Laravel 5.2

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

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

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

и таблица данных с полем id, title и completed ..

как я могу введите все значение в data.txt в мою таблицу (данные) с laravel 5.2 ??

Спасибо раньше .. и простите за мой плохой английский ..

ответ

2

чтения файла и преобразовать его в PHP массив

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

Тогда простой Еогеасп

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

Или вы мог бы сделать это straightfoward, если вы определили $fillable атрибуты

foreach($arrays as $array) 
    Model::create($array); 

Eloquent: Mass Assignment

Использование Query Builder

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

Query Builder: Insert

+0

спасибо, что это работа ..... !!! – Megandi

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 содержит хорошо отформатированный JSON, то вы можете пропустить взрывающиеся, фильтрацию и отображение шагов:

$data = file_get_contents('path/to/data.txt'); 

// Insert to your database table 
DB::table('mytable')->insert($data); 

Если вы собираетесь сделать это несколько раз, рекомендуется использовать метод красноречивый модель updateOrCreate() предотвратить дублированные строки. Вот пример:

// Uses $data value from the first example 
foreach($data as $row) { 
    MyModel::updateOrCreate(['id' => $row['id'], $row); 
} 

Просто добавление в случае, если вы захотите пойти с помощью Laravel's way (Filesystem). Поместите свой data.txt в папку 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); 
} 
+0

спасибо, что ответ ... – Megandi

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); 
+0

спасибо, что ответ ... – Megandi

Смежные вопросы