РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
94 of 1392 menu

Поле binary

Метод binary используется в миграциях Laravel для создания колонки с бинарными данными. Он применяется к объекту схемы через метод table или create и создает колонку типа BLOB в базе данных. Первым параметром передаётся имя колонки, вторым - длина данных (опционально). Данный тип подходит для хранения изображений, файлов, сериализованных объектов и других бинарных данных.

Синтаксис

<?php Schema::table('table_name', function (Blueprint $table) { $table->binary('column_name', $length); }); ?>

Пример

Давайте создадим таблицу 'users' с полем 'avatar' для хранения аватара пользователя:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->binary('avatar')->nullable(); $table->timestamps(); }); } public function down() { Schema::dropIfExists('users'); } }; ?>

Пример

Давайте создадим таблицу 'documents' с полем 'content' для хранения содержимого документа:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up() { Schema::create('documents', function (Blueprint $table) { $table->id(); $table->string('title'); $table->binary('content'); $table->binary('preview')->nullable(); $table->timestamps(); }); } public function down() { Schema::dropIfExists('documents'); } }; ?>

Пример

Давайте сохраним данные в бинарное поле через модель:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Document extends Model { protected $fillable = ['title', 'content', 'preview']; } ?>
<?php namespace App\Http\Controllers; use App\Models\Document; class DocumentController extends Controller { public function store() { $fileContent = file_get_contents('path/to/document.pdf'); $previewData = base64_decode('base64_preview_data'); $document = Document::create([ 'title' => 'My Document', 'content' => $fileContent, 'preview' => $previewData, ]); echo $document->id; } } ?>

Результат выполнения кода:

1

Пример

Давайте извлечем бинарные данные из базы и выведем их размер:

<?php namespace App\Http\Controllers; use App\Models\Document; class DocumentController extends Controller { public function show($id) { $document = Document::findOrFail($id); $contentSize = strlen($document->content); $previewSize = $document->preview ? strlen($document->preview) : 0; $res = [ 'title' => $document->title, 'content_size' => $contentSize, 'preview_size' => $previewSize, ]; echo json_encode($res); } } ?>

Результат выполнения кода:

{"title":"My Document","content_size":1024,"preview_size":256}

Пример

Давайте обновим бинарное поле у существующей записи:

<?php namespace App\Http\Controllers; use App\Models\Document; class DocumentController extends Controller { public function update($id) { $document = Document::findOrFail($id); $newContent = file_get_contents('path/to/new_document.pdf'); $document->content = $newContent; $document->save(); echo 'Document updated'; } } ?>

Результат выполнения кода:

"Document updated"

Смотрите также

  • метод string,
    который создает текстовое поле для хранения строк
  • метод text,
    который создает поле для длинного текста
  • метод json,
    который создает поле для JSON-данных
  • метод index,
    который создает индекс для колонки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить