2012-03-12 2 views
0

getLastInsertIDとModel-> idは同じですか?そして、どちらが同時性の問題を起こすことができますか?cakephp getLastInsertID/Model-> id

$this->Model->save($this->data); 
__thisFunctionTakesAVeryLongTimeToExecute(); //function 1 
$insertId = $this->Model->getLastInsertId(); 

getLastInsertId()は、2行上に保存したデータからIDを返します。または、それは作成された最新のIDを返しますか?

意味 関数1(__thisFunctionTakesAVeryLongTimeToExecute();)が別のユーザーに対して別の保存を実行するとどうなるでしょうか。それから私はどちらのIDを取得するのですか?

答えて

0
$this->Model->id 

idを設定し、関連するデータを読み取りまたは変更するために使用されます。

$this->Model->getLastInsertID(); 

このモデルで最後に挿入された行のIDを返します。

あなたの最後の質問は、テストをしてください!ここで答えを発表してください。

0

他にも同様の問題があります。 私が注文し、そのhasManyのテーブルが破壊されている間

$oid = $this->Home->Order->getLastInsertID(); 
$order = $this->Home->Order->find('first',array('conditions'=>array('Order.id'=>$oid))); 

モデルの関連付けを置く場合。私は

$oid = 1; // for example 
$order = $this->Home->Order->find('first',array('conditions'=>array('Order.id'=>$oid))); 

を置く場合

モデルの関連付けは維持されます!!!!

0

CakePHPの3.0または

$result = $this->ModelName->save($data) 
echo $result->id; 
上記のコード以下の使用