Inserir mp3 na base de dados

Como inserir um mp3 na base de dados?

Eu tenho os seguintes modelos:

Document:


<?php


/**

 * This is the model class for table "document".

 *

 * The followings are the available columns in table 'document':

 * @property integer $idbinarios

 * @property string $filename

 * @property string $content

 *

 * The followings are the available model relations:

 * @property Ritmo[] $ritmos

 * @property Ritmo[] $ritmos1

 */

class Document extends CActiveRecord

{

	/**

	 * Returns the static model of the specified AR class.

	 * @param string $className active record class name.

	 * @return Document the static model class

	 */

	public static function model($className=__CLASS__)

	{

		return parent::model($className);

	}


	/**

	 * @return string the associated database table name

	 */

	public function tableName()

	{

		return 'document';

	}


	/**

	 * @return array validation rules for model attributes.

	 */

	public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('idbinarios, filename, content', 'required'),

			array('idbinarios', 'numerical', 'integerOnly'=>true),

			array('filename', 'length', 'max'=>345),

                        array('content', 'file'),

			// The following rule is used by search().

			// Please remove those attributes that should not be searched.

			array('idbinarios, filename, content', 'safe', 'on'=>'search'),

		);

	}


	/**

	 * @return array customized attribute labels (name=>label)

	 */

	public function attributeLabels()

	{

		return array(

			'idbinarios' => 'Idbinarios',

			'filename' => 'Filename',

			'content' => 'Content',

		);

	}


	/**

	 * Retrieves a list of models based on the current search/filter conditions.

	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.

	 */

	public function search()

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('idbinarios',$this->idbinarios);

		$criteria->compare('filename',$this->filename,true);

		$criteria->compare('content',$this->content,true);


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}

}

e

Ritmo onde tem uma foreign para o id do document:


'mp3' => array(self::BELONGS_TO, 'Document', 'mp3'),

a ideia é ter um activefilefield e fazer o upload para a base de dados

Modifiquei o meu código assim:


public function actionCreate() {

        $ritmo = new Ritmo;

        $mp3=new Document;


        // Uncomment the following line if AJAX validation is needed

        // $this->performAjaxValidation($model);

        if(isset($_POST['Document']))

        {

            $mp3->attributes=$_POST['Document'];

 

            if(!empty($_FILES['Document']['tmp_name']['content']))

            {

                $file = CUploadedFile::getInstance($mp3,'content');

                $mp3->filename = $file->name;

                $mp3->type = $file->type;

                $fp = fopen($file->tempName, 'r');

                $content = fread($fp, filesize($file->tempName));

                fclose($fp);

                $mp3->content = $content;

                

                $mp3->save();

            }

        }

       

        $this->render('create', array(

            'ritmo' => $ritmo,

            'mp3'=>$mp3

        ));

mas não grava na base de dados e nem sequer dá erro.

Acho mais fácil você achar a resposta em fóruns específicos para o banco de dados que você está utilizando.

Uma outra alternativa que você pode utilizar seria colocar os arquivos em uma pasta protegida e gravar no banco somente o nome do arquivo MP3.

Sim até poderia mas acho que não é sistema até porque tenho tambem imagens para inserir na base de dados.Só não estou a perceber porque não grava nada e não dá erro.Existe algum log onde eu possa ver o que se passa?