web-dev-qa-db-ja.com

Flutter SQFLITE 1対多の関係の設定

アプリを作成してデータベースが必要です。データベースにはロケーションテーブルと興味のポイントテーブルが含まれています。
[。□多くの関係には1つです。
[。]場所にはいくつかの興味があります。
[。]今、私はこの関係をsqpriteでフラッターでやろうとしましたが、失敗しました。私はすでに外部キーを追加しようとしましたが、それはうまくいきませんでした。
[。]これはコードの最も重要な部分にすぎません。

static final String locationTable = 'location';
static final String columnLocationId = 'id';
static final String columnLocationTitle = 'title';  

static final String pointOfInterestTable = 'point_of_interest';
static final String columnPointOfInterestId = 'id';
static final String columnPointOfInterestTitle = 'title';

static final String createTableLocation = 'CREATE TABLE $locationTable('
    '$columnLocationId INTEGER PRIMARY KEY AUTOINCREMENT,'
    '$columnLocationTitle TEXT NOT NULL)';

static final String createTableLocation = 'CREATE TABLE $pointOfInterestTable('
    '$columnPointOfInterestId INTEGER PRIMARY KEY AUTOINCREMENT,'
    '$columnPointOfInterestTitle TEXT NOT NULL)';

Future<List> getPointOfInterestsOfLocations(int id) async {
    final db = await this.db;
    final maps = await db.query(
      locationTable,
      where: '$columnLocationId = ?',
      whereArgs: [id],
    );
    return maps.toList();
}
 _

これはリストにロードするためのコード行です。

List pointOfViews = await _pointOfViewDb.getPointOfInterestsOfLocations(id: location.id);
 _
6
Hans Baum

SQFLITE(Flutter)における外部キーの関係次のようにして行うことができます。

 createTable() async{
  final db = await database;
  var raw = await db.execute("CREATE TABLE MarketInfoes ("
          "id integer primary key, userId integer, typeId integer,"
          "gradeId integer, price DOUBLE" 
          "FOREIGN KEY (typeId) REFERENCES Type (id) ON DELETE NO ACTION ON UPDATE NO ACTION," 
          "FOREIGN KEY (userId) REFERENCES User (id) ON DELETE NO ACTION ON UPDATE NO ACTION," 
          "FOREIGN KEY (gradeId) REFERENCES Grade (id) ON DELETE NO ACTION ON UPDATE NO ACTION"
          ")");
}
 _
1

ここでは、SQLite:外部キーとのテーブルとSQL関係の作成

https://www.techiediaries.com/sqlite-create-table-foreign-key-relationships/
 _
1
Messou