次のようなモデルがあります。
class Pdf extends \lithium\data\Model
{
protected $_meta = array('source' => 'fs.files');
protected $_schema = array('_id'=>array('type'=>'id'));
public $file;
/**
* @param $zipfile string The full name and path of a zip file
* @param $filename string
*/
public static function loadFromFile($zipfile, $filename){
$name = 'zip://'.$zipfile.'#'.$filename;
$pdf = Pdf::create();
$pdf->file = file_get_contents($name);
$pdf->filename = $filename;
$pdf->metadata = ["filename" => $filename, "zipfile" => $zipfile];
return $pdf;
}
}
静的関数は、zip アーカイブの完全な名前とアーカイブ内のファイルの名前を取得し、モデルを作成し、アーカイブされたファイルからコンテンツを読み込み、いくつかのメタデータを設定し、モデルを返します。これは、私が書いているコンソール コマンドで使用されます。このコマンドは、それぞれが多数の pdf を含む zip ファイルのリストを反復処理し、pdf をデータベースに追加します。
モデルを保存すると、実際に pdf がデータベースに追加されます。MongoDB コンソールからすべての pdf を表示できますdb.fs.files.find()
。mongofiles コマンドを使用して、データベースから pdf を取得することもできます。
ただし、pdf を fs.files の下に保存するのではなく、fs.files.pdfs の下に保存できると本当に便利です。これは、同じデータベースに jpeg とテキスト ドキュメントも保存することを計画しているためです。
クラスの $_meta を に変更するarray('source' => 'fs.files.pdfs')
と、コンソール コマンドは pdf ドキュメントを追加するのではなく、端末に出力するように見えます (ちなみに、なぜ Lithium がそうしているのか知りたいです!)
ドキュメントを確認しましたが、何が間違っているのかわかりません。使用しているモデルに応じて、Lithium でファイルを別のコレクションに保存する方法はありますか?
(私の用語が不正確である場合は申し訳ありません。これは、基本的なチュートリアルを超えて Lithium と MongoDB を使用する最初の試みです。)