MongoDB Обновление GridFS Record

Я реализовал CRUD операции с использованием PHP + MongoDB, Приведенный ниже код используется для загрузки любого файла с использованием GridFS,

$conn = new MongoClient();
$db = $conn->selectDB('mydb');
$gridfs = $db->getGridFS('uploads');

foreach ($_FILES as $file) {

if(in_array($file['type'], $acceptedTypes)){

$id = $gridfs->storeFile($file['tmp_name'], array('filename' => $file['name'], 'type' => $file['type'], "id"=> 13, "parentId" => "10", "title" => $file['name'], "isFolder" => 0));}else{

echo 'file is not of correct type';
}
}
$conn->close();`

Я могу загрузить любой документ, используя указанный выше код, но когда я пытаюсь обновить title из любого файла это просто не работает. Код для обновления имени файла приведен ниже.

$files = $db->fs->uploads;
$primId = $_GET['id_value'];
$renameTitle = $_GET['name'];
$updateData = array("title" => $renameTitle, "updatedDate" => date('Y-m-d'));

$files->update(array("id" => $primId), array( '$set' => $updateData ));
$conn->close();

Это обновит title любого файла, чей ID передается. Код работает, если мне нужно обновить какую-либо запись, но он не работает для любого GridFS файл загружен.

Чтобы быть более точным, если я прохожу ID как ниже,

$file = $gridfs->findOne(array('id' => 13)); **//WORKS**

$file = $gridfs->findOne(array('id' => $_GET['id'])); **//DO NOT WORKS**

Есть ли другой метод, который будет использоваться для обновления GridFS записи?

Благодарю.

-1

Решение

Наконец-то разобрался.

MongoDB нуждается integer переменная для создания правильного запроса.

Если вы используете $_GET или же $_POST значения непосредственно, вы должны сначала преобразовать его в целочисленное значение. В моем проекте это работает так:

$id = (int)$_GET["id"];
$file = $gridfs->findOne(array('id' => $id)); **//WORKS LIKE CHARM**

Надеюсь, это поможет кому-то.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]