Flutter para Laravel Eloquent

flutter

Laravel Eloquent en Flutter

Eloquent Laravel Eloquent no es solo un marco de aplicación web con una sintaxis expresiva y elegante, sino también un milagro capaz de cambiar vidas. He sido desarrollador desde hace dos años y luego Flutter se popularizó. Así que probé Laravel en Flutter y me encantó por completo…

Desde que aprendí Flutter, tengo que lidiar con la base de datos y he encontrado un paquete que tiene características casi exactas como Laravel Eloquent, que es un mapeador relacional de objetos (ORM) que hace que sea agradable interactuar con su base de datos.

Desafortunadamente, no he encontrado uno que sea fácil de usar y tenga características similares a Laravel Eloquent. Así que traté de crear WazEloquent usando Sqflite. Estoy bastante satisfecho con él y me gustaría compartir y ayudar a cualquiera. Estaría muy contento si mi paquete te ayuda. ¡Salud!


Integramos WazEloquent con tu proyecto flutter.

1. Instale el paquete a través del comando flutter.

$ flutter pub add wazeloquent

O incluye el paquete en tu pubspec.yaml y ejecuta flutter pub get

2. Configure las configuraciones antes de usar el paquete.

  • Obtener instancia de clase de base de datos.
var db = DB.instance;
  • Establecer la versión de la base de datos. (Opcional) (Predeterminado: 1)
db.setDbVersion(1);
  • Establezca el nombre del archivo de base de datos. (Opcional) (Predeterminado: ‘wazeloquent.db’)
db.setFileName('example.db');
  • Configure el directorio para crear un archivo db. (Opcional) (Predeterminado: ‘data/data//databases’ para Android y directorio de documentos para IOS)
db.setFilePath(path);
  • Cree una tabla o ejecute los comandos iniciales como desee utilizando los métodos onCreateonOpenonConfigureonUpgradeonDowngrade. Esos métodos se basan en cómo Sqflite abre la base de datos. Consulte la documentación de Sqflite para obtener más detalles.
db.onCreate([
    Future(() {
     return (Database db, int) async {
       // do something on Create db
     };
     }),
 ]);
 db.onOpen([
     Future((){
      return (Database db)async{
        // do something on Open db
     }
    }),
  ]);

db.onConfigure([]);
db.onUpgrade([]);
db.onDowngrade([]);
  • Crea tu clase elocuente y amplía Eloquent. Digamos que queremos crear una tabla elocuente para interactuar con los users.
import 'package:wazeloquent/wazeloquent.dart';class UserEloquent extends Eloquent {
   @override
  List<String> get columns =>['id','name','password','createdAt','updatedAt'];

  @override
  String get getPrimaryColumn => 'id';

  @override
  String get tableName => 'users';
}
  • Vamos a crear la tabla de users. Puede crear una tabla ejecutando la consulta sqlite o usando el método estático DB.createTable(). Siéntete libre de usar lo que te apetezca.
db.onCreate([
    Future(() {
     return (Database db, int) async {
      await db.execute(
    "CREATE TABLE Users (id INTEGER PRIMARY KEY, name STRING NOT NULL, password STRING NOT NULL, createdAt STRING NOT NULL, updatedAt STRING NOT NULL)");
      };
     }),
  ]);

Me gustaría sugerirle que tenga una variable estática en su elocuente. Por ejemplo, vea a continuación.

//user_eloquent.dart
class UserEloquent extends Eloquent {  .....  static Future<Function(Database, int)> onCreate = Future(() {
      return (Database db, int version) async {
      await DB.createTable(db, tableName: 'users',columns: {
        'id': [ColumnType.idType],
        'name': [ColumnType.stringType, ColumnType.notNull],
        'password': [ColumnType.stringType, ColumnType.notNull],
        'createdAt': [ColumnType.stringType, ColumnType.notNull],
        'updatedAt': [ColumnType.stringType, ColumnType.notNull],
    });
      };
  });
}//main.dart
void main() {
  DB.instance.onCreate([UserEloquent.onCreate]);
  DB.instance.onOpen([UserEloquent.onOpen]);
  runApp(const MyApp());
}

 

Incluso puede integrar su base de datos existente con el paquete. Simplemente configure la ruta y el nombre del archivo antes de usar eloquent.

db.setFilePath(dir, shouldForceCreatePath: verdadero); // Especifique ‘shouldForceCreatePath’ como verdadero para crear una carpeta si no existe.
db.setFileName(‘ejemplo.db’);

 

Hurra ! Ha configurado correctamente el paquete y ahora puede usar métodos elocuentes.

3. Aprendamos a CRUD.

  • Crear registros
var userEloquent = UserEloquent();

await userEloquent.create({'name':'John','password':'pass'});
// Create user whose name is 'John' and password is 'pass'
  • Lectura de registros
var userEloquent = UserEloquent();// Get all users
await userEloquent.all();await userEloquent.get();// Get users whose name is 'John'
await userEloquent.where('name','John').get();// Get users whose name contains 'J'
await userEloquent.where('name','%J%',operator:Operator.like).get();await userEloquent.search('J');// Get users orderBy 'name' column in ascending mode.
await userEloquent.orderBy('name').get();// Get users orderBy 'name' column in descending mode.
await userEloquent.orderBy('name',sort:Sort.descending).get();await userEloquent.orderByDesc('name').get();

Hay más características sobre cómo puede obtener registros. Por favor consulte la documentación.

  • Actualización de registros
var userEloquent = UserEloquent();// update name of all rows to 'john'.
userEloquent.update({'name':'john'});

// update name of rows where id = 1 to 1.
userEloquent.where('id',1).update({'name':'john'});// Update the first found record.
userEloquent.where('id',1).limit(1).update({'name':'john'});
  • Eliminación de registros
var userEloquent = UserEloquent();

// delete all rows from users
userEloquent.delete();

// delete rows where name has 'j' from users
userEloquent.where('name','%j%',operator:Operator.like).delete();// delete the first found record.
userEloquent.where('id',1).limit(1).delete();// delete row where primary key is 1
userEloquent.deleteBy(1);

Espera, hay más funciones que WazEloquent puede ofrecer.

  • Administrar relaciones de tablas como one-to-one , one-to-many and many-to-many en Laravel Eloquent way.

Intentaré escribir cómo puede configurar la relación en su aplicación flutter sin sudar un poco. Así que estad atentos. XDD

 

Para que el paquete sea más estable y mejor, tenga la amabilidad de abrir un problema en github si ha encontrado un error. 🙄🥺

 

WazEloquent se desarrolló para mejorar la vida de los desarrolladores y ahorrar tiempo.

Buena suerte y diviertete. Feliz codificación para ti. ¡Éxitos! 🎉


Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre Laravel:

Recent Post