J'ai un modèle qui ressemble à ceci:Comment stocker des fichiers de différents types dans des collections séparées en utilisant Lithium et GridFS?
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;
}
}
La fonction statique prend le nom complet d'une archive zip et le nom d'un fichier dans l'archive, crée un modèle, charge le contenu du fichier archivé, définit des métadonnées et renvoie le modèle. Ceci est utilisé dans une commande de console que j'écris qui va itérer à travers une liste de fichiers zip, chacun contenant un tas de pdfs, et ajouter le pdfs à la base de données.
Lorsque je sauvegarde le modèle, le pdf est ajouté à la base de données. Je peux voir tous les fichiers PDF de la console MongoDB, c'est-à-dire avec db.fs.files.find()
. Je peux aussi obtenir un pdf de la base de données en utilisant la commande mongofiles.
Cependant, il serait vraiment être gentil si au lieu de stocker le pdfs sous fs.files je pourrais les stocker sous fs.files.pdfs. C'est parce que je prévois de stocker également des jpegs et des documents texte dans la même base de données.
Si je change _meta $ dans la classe à array('source' => 'fs.files.pdfs')
, ma commande de la console semble sortie le document pdf au terminal au lieu de l'ajouter (désinvolture, je voudrais savoir pourquoi Lithium fait ça!)
J'ai vérifié la documentation et n'ai pas été capable de comprendre ce que je fais mal. Existe-t-il un moyen pour que Lithium stocke mes fichiers dans des collections distinctes en fonction du modèle utilisé?
(Mes excuses si ma terminologie est inexact, ce qui est ma première tentative d'utilisation de lithium et MongoDB au-delà des tutoriels de base.)
FYI, la terminologie [GridFS] (http://www.mongodb.org/display/DOCS/GridFS+Specification#GridFSSpecification-Specification) pour ceci est un "espace de noms". – Stennie