2017-09-15 8 views
0

私は、txtファイルをmySQLデータベースに保存できるものを作成するのに苦労しています。私はJSONファイルを保存するが、txtファイルは保存しないものを作成しました。Laravel - mySQLデータベースに.txtファイルを保存する

ここに問題のtxtファイル:http://celestrak.com/NORAD/elements/sbas.txtがあります。このtxtファイルには、データを含むいくつかの衛星が含まれています。各衛星には3本の線があり、例外はありません。例えば、ここに1つの衛星があります:

AOR-E (EGNOS/PRN 120) 
1 24307U 96053A 17257.68868765 -.00000150 00000-0 00000-0 0 9992 
2 24307 2.8040 77.2609 0004175 104.1816 44.8421 1.00271450 76939 

最初の行は衛星の名前を示しています。次の2行はいくつかのパラメータを与えます。パラメータは常に12から始まります。この形式は変更されません。0の行とその後の2行の名前は、1または2で始まります。列ライン2のためのライン1のためのライン0ためobject_nametle_line1tle_line2で - 私が行うことができるようにしたいどのような

は、各衛星の行を作成することです。

JSON形式のデータをSQLデータベースに保存するものを作成しました。たぶん、それから逸脱することがありますか?

私はLaravelを使用してHTTP要求をがつがつ食うています:すべての

$api = new Client([ 
    'base_uri' => 'http://celestrak.com', 
]); 
$response = $api->get('jsonlocater'); 
$data = json_decode($response->getBody()->getContents(), true); 
    foreach ($data as $attributes) { 
    $attributes = array_change_key_case($attributes, CASE_LOWER); 
    Satellites::create($attributes); 
} 
+0

各行をDBに保存してから、要求に応じてこれらの行を結合してダウンロード用のtxtファイルを作成できますか?それはあなたがしようとしていることですか? – Ice76

+0

@ Ice76 - 私は、txtファイルに含まれているデータをデータベースに保存したいだけです。 –

答えて

1

まず、私はあなたの応答の形式が何であるかはよく分からないが、あなたが取得するために、次のような何かを行うことがPHPバニラを使用して配列の内容:

:今

$url = 'http://celestrak.com/NORAD/elements/sbas.txt'; 
$lines = file($url, FILE_IGNORE_NEW_LINES); 
$arrays = array_map(function($array) { 
    $columns = ['object_name', 'tle_line1', 'tle_line2']; 
    return array_combine($columns, array_map('trim', $array)); 
}, array_chunk($lines, 3)); 

、あなたdd($arrays)結果なら、あなたは、次のようなものを買ってあげます

この結果から、データベースに簡単にエントリを作成することができます。 imageの各配列は、データベーステーブルのエントリ/行でなければなりません。あなたがあなたのテーブルに(& updated_atのはcreated_at)タイムスタンプをした場合、その後、あなたは配列を生成する際に、各配列内のこれらのフィールドを追加しました

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

注:たとえば。

関連する問題