[英]add data on 2 table at the same time zf2
我有兩個桌子
id_sale int
id_projet int
price float
date date
id_sale_ligne int
id_sale int FK_SALE
id_projet int
price float
date date
即時消息問我制作新記錄時如何在具有相同id_sale的sale_line上插入記錄。 我知道這是一個很大的問題,但我確實陷在這里,我可以在ZF官方文檔中找到此示例,因此任何人都可以幫助我提出建議或提供完整示例的參考來解釋我的情況
萬分謝意
有幾種方法可以做到這一點。 最簡單的方法可能是在首次插入sale
后僅執行另一個SQL查詢。 您可以執行以下操作:
// Insert sale and get the ID
$this->dbAdapter->query('INSERT INTO sale (price, date) VALUES (?, ?)', array('price', 'date'));
$salesId = $this->dbAdapter->getDriver()->getLastGeneratedValue();
$this->dbAdapter->query('INSERT INTO sale_ligne (price, date, id_sale) VALUES (?, ?, ?)', array('price', 'date', $salesId));
請不要在上面的示例中省略了錯誤處理。 假設您正在對sale
表中的主鍵使用自動遞增,則getLastGeneratedValue
方法將返回最后生成的ID。
或者,您可以使用LAST_INSERT_ID()
在存儲過程中執行相同的操作。 由於表的性質,您可能需要指定要插入到sale_ligne
表中的數據(即,值不等於默認列值)。 否則,可能可以在sale
表上添加一個插入觸發器,然后在該觸發器內進行插入。 但是,第一種方法或在存儲過程中將更易於實現,並為您提供更多控制權,並使其他開發人員更容易理解流程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.