Child created/updated upon creation/update of the parent
Child created/updated upon creation/update of the parent
Hello,
I have 2 tables:
Transaction
*id
*date
*amount
*flowid
Flow
*id
*date
*amount
My datatables works fine for the 1st one.
But what I am trying to do is:
1. when creating the transaction, it creates as well the flow at the same time
2. when updating the transaction, it updates the flow (example: amount or date, based on the amount or date of the transaction) at the same time
It is not exactly a parent child editor because I want the flow to be created automatically.
Did anyone manage to implement something similar?
Replies
Add this to your php Editor for "transaction"
I would not recommend to do the UPDATE without having a foreign key of "transaction" in "flow" because the update might go wrong if you only do the matching based on the previous amount and date of the transaction. Hence my code requires the implementation of "transaction_id" as foreign key in table "flow".
Flow
*id
*transaction_id
*date
*amount
If you are not reading back the changed "flow" entries with this Editor, you can also use "postCreate" and "postEdit". Then you can also use "$row" to use the values read back from table "transaction".
You can also use your own db-handler in the above events with "global".
Thank you rf1234.
As a matter of fact, although I did not mention it, I had a transaction_id equivalent field.
I followed your code but am getting the following message: Undefined array key "date".
I will look into it and keek you posted
If you want more flexibility, you can also use Editor's "raw" method with real SQL like this
Hi rf1234,
Thanks, but this method leads to the same result:
The transaction_id works fine but the debug highlights a null value returned for date and amount
Any idea of where it can come?
I think you need to check the $values array in your debugger.
Does $values['tms_ft_financialtransaction.TransactionDate'] exist at all? If so what does it contain? Same applies to $values['tms_ft_financialtransaction.TransactionAmount'].
I am pretty sure both don't exist.
You should probably use this:
$values['tms_ft_financialtransaction']['TransactionDate'] and
$values['tms_ft_financialtransaction']['TransactionAmount']
I don't see any set formatting. Do you really return the date and the amount from the client in database format? I usually return those values as formatted values depending on the user language
e.g. "1.000.000,99" and "23.11.2024" or "1,000,000.99" and "23/11/2024"
Then I use set formatters to get 1000000.99 and "2024-11-23 00:00;00"
Here is something I use for dates and amounts
Thanks rf1234!
Looks like I indeed had to use
instead of
I still doesn't update the child, but I have no more error message and I will keep working on it.
Yeah - it uses nested arrays rather than having the full name with dot delimitation in it.
Possibly something to do with the id? If you add
->debug(true)
before the->process(...)
call, the JSON response from the server will include the SQL that is being executed, which might be useful. Feel free to post the full JSON here if you like.Allan
Thanks both,
I fixed it thanks to your comments and I can now create/update/delete the chid upon the creation/update/deletion of the parent, but I still have 3 things to fix before getting what I exactly need.
Allow me to start with the first one.
As you can see below, the description of the child is a concatenation of several fields of the parent:
What I need is, instead of quoting the value of the currency select field (meaning $values['tms_ft_financialtransaction']['TransactionCurrency']), quoting the code of the currency ( 'TransactionCurrency.devise_code' below)
Is it possible to do that?
Yes, that's possible:
if you have the other field "left joined" (don't know whether that's possible for you or not) you can just refer to it like to the other field.
If you can't do the left join with Editor you can still SELECT the suitable value and insert it then.