I need to insert the data one at a time and add it to the end of the string, but what happens is that the way I’m doing is overwriting the data
for (var i = 0; i< isChecked.length; i++) {
receipt.ingredientsReceipt = isChecked[i]; //receipt is table name, ingredientsReceipt is column name
print(isChecked[i]);// isChecked is my list containing [ING 1, ING 2, ING 3]
}
Output:
I/flutter ( 5360): ING 1 I/flutter ( 5360): ING 2 I/flutter ( 5360): ING 3
This is my SQL:
CREATE TABLE receipt(id INTEGER PRIMARY KEY AUTOINCREMENT, nameReceipt TEXT, descReceipt TEXT, ingredientsReceipt TEXT)
Output SQL:
{id: null, nameReceipt: TEST, descReceipt: TEST, ingredientsReceipt: ING 3}
I need it to be like this:
{id: 1, nameReceipt: TEST, descReceipt: TEST, ingredientsReceipt: ING 1, ING 2, ING 3}
Advertisement
Answer
According to my comment, use 3 tables :
RECEIPTS
| id | nameReceipt | descReceipt |
|---|---|---|
| 1 | name1 | desc1 |
| 2 | name2 | desc2 |
INGREDIENTS
| id | name |
|---|---|
| 1 | ingr1 |
| 2 | ingr2 |
| 3 | ingr3 |
| 4 | ingr4 |
RECEIPT_INGREDIENT
| id | receipt_fk | ingredient_fk |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 3 |
| 5 | 2 | 4 |
So when you want to get a receipt, you’ll have to write a query to select data from receipt, join with receipt_ingredient (where receipt.id = receipt_ingredient.receipt_fk), join with ingredient (where receipt_ingredient.ingredeint_fk = ingredient.id).
Ex. get receipt id = 1 =>
| id | nameReceipt | descReceipt | receipt_fk | ingredient_fk | name |
|---|---|---|---|---|---|
| 1 | name1 | desc1 | 1 | 1 | ingr1 |
| 1 | name1 | desc1 | 1 | 2 | ingr2 |
| 1 | name1 | desc1 | 1 | 3 | ingr3 |