0

Doctrine 2.2.2 と Oracle データベースで Symfony2 を使用しています。ファイルを BLOB として Oracle DB に保存したいと考えています。BLOB タイプを持つ Doctrine の costum タイプを作成しました。次のようになります。

class Blob extends Type
{
const BLOB = 'blob';


public function convertToPHPValue($value, AbstractPlatform $platform)
{
    return (is_resource($value)) ? stream_get_contents($value) : $value;
}

public function getSqlDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
{
    return 'BLOB';
}

public function getBindingType() {
    return \PDO::PARAM_LOB;
}

public function getName()
{
    return self::BLOB;
}
}

ファイルを保持するエンティティは次のとおりです。

<?php

class Document
{
/**
 * @var integer $id
 */
private $id;

/**
 * @var file $file
 */
private $file;

/**
 * Get id
 *
 * @return integer 
 */
public function getId()
{
    return $this->id;
}

/**
 * Set file
 *
 * @param blob $file
 */
public function setFile($file)
{
    $this->file = $file;
}

/**
 * Get file
 *
 * @return blob 
 */
public function getFile()
{
    return $this->file;
}
}

コントローラーでファイルを保存したい場合、Doctrine は、ファイルのアップロード時に作成される一時ファイルへのパスのみを保存します。

4

2 に答える 2

1

$file変数はリソースではないようです。

あなたはこれを試すことができます:

public function convertToPHPValue($value, AbstractPlatform $platform)
{
    return is_file($value) ? file_get_contents($value) : $value;
}
于 2012-05-01T10:35:02.307 に答える
1

ここでDoctrine2.2のblobタイプのようですDoctrine\DBAL \ Types \ BlobType

于 2013-03-13T15:43:11.383 に答える