CakePHP(v3.x)、ファイルをBLOBなカラムに保存する

今回はPDFを保存する例でControllerの書き方をまとめていきたいとおもいます。

DocumentsというテーブルのfileというBLOBカラムにバイナリデータを保存していきます。

public function add(){
    $postData = $this->request->getData();
    if(!empty($postData['pdf']['tmp_name'])){
        $upFiles = $this->request->getUploadedFiles();
        $data = [
            'file' => $upFiles['pdf']->getStream(),
            'file_name' => $upFiles['pdf']->getClientFileName(),
        ];
        $documents = $this->Documents->newEntity($data);
        $this->Documents->save($documents);
    }
}

connection managerなどもろもろ追加する必要がありますがこれでPDFが保存されるかと思います。