Я использую Doctrine 1.1.2 в качестве моей платформы ORM в сочетании с Zend Framework и серверной частью MSSQL. То, что я пытаюсь сделать, это сохранить блоб в базе данных, но Doctrine выдает мне ошибки, когда я пытаюсь. Столбец в базе данных имеет тип varbinary (max), а модель в Doctrine настроена следующим образом:
$this->hasColumn('binary_data', 'blob', null, array(
'type' => 'blob',
'notnull' => false,
'primary' => false,
'autoincrement' => false,
));
Это генерируется с Doctrine :: generateModelsFromDB и должно быть правильным. Источником блоба является загрузка файла. Я подтвердил, что загрузка файла прошла успешно, и что я могу напечатать двоичные данные (отображается как набор искаженных данных).
Когда я пытаюсь сохранить двоичные данные с помощью модели Doctrine, я получаю разные сообщения об ошибках в зависимости от того, что я делаю. Я до сих пор пробовал это (вероятно, еще немного, что я не помню):
// Error:SQLSTATE[HY000]: General error: 10007 Incorrect syntax near '%PDF-1.5 %µµµµ...
$model->binary_data = fread(fopen($_FILES["file"]["tmp_name"], 'r'), filesize($_FILES["file"]["tmp_name"]));
$model->save();
---
// Error: same as above
$fileHandle = fopen($_FILES["file"]["tmp_name"], "r");
$fileContent = fread($fileHandle, filesize($_FILES["file"]["tmp_name"]));
$model->binary_data = $fileContent;
$model->save();
---
// This should work on 1.2, but I have 1.1.2
// Error: Validation failed in class Clazz 1 field had validation error: * 1 validator failed on binary_data (type)
$model->binary_data = file($_FILES["file"]["tmp_name"]);
$model->save();
Это должно быть прямо, но я просто не могу понять, что я делаю неправильно.