2016-07-01 18 views
1

Es gibt 2 Tabellen quodetypen und coatmaster und ein gemeinsames Feld QuoteNo. SNO ist der Primärschlüssel des Angebotsstamms. Ich möchte das Maximum von Sno bekommen und benutze es, ich möchte dieselbe QuoteNo in 2 verschiedene Tabellen einfügen. Heres mein Code.Ich möchte eine zuletzt eingefügte ID erhalten

$response = ''; 
$customer=TableRegistry::get('quotationmaster'); 
$query=$customer->query(); 
$this->set(array('data'=>$query)); 
$response = $customer->find(); 
foreach($response as $row) 
{ 
    //echo $row['QuoteNo']; 
    $x++; 
} 
$qno = $x + 1; 
$nqno = 'Q1-'.$qno; 
$query->insert(['QuoteNo'])-> 
values(['QuoteNo'=>$nqno])->execute(); 
if($query) 
{ 
    $this->Flash->success('Saved'); 
    $this->redirect(['controller'=>'Stockcheck','action'=>'index']); 
} 

$quotedetails=TableRegistry::get('quotationmaster'); 
$detquery=$quotedetails->query(); 
$options = $detquery->select(['QuoteNo'],['SerialNO' => $query->func()->MAX('SNO')]); 
$qresponse = $quotedetails->find('all', $options); 


Any helps are appreciable... 
+0

Nichts für ungut, aber das sieht wirklich komisch aus. Das Testen von '$ query' ist immer truthy, das zweite Argument von' Query :: select() 'erwartet einen booleschen Wert, kein Array, und das zweite Argument von' Table :: find() 'erwartet ein Array, kein a Abfrageobjekt. Sie sollten eine Reihe von Fehlern sehen, wenn Sie diesen Code ausführen. Bist du dir sicher, dass du weißt, was du da machst? Ich würde vorschlagen, die Dokumente ein wenig mehr zu studieren, damit Sie ein besseres Verständnis dafür bekommen, wie die Dinge funktionieren, und dann vielleicht 'Table :: save()' verwenden, anstatt Datensätze manuell einzufügen. – ndm

Antwort

0

Sie können zu verwenden versuchen:

echo $this->SNO->getInsertID(); 
echo $this->SNO->getLastInsertID(); 

Sie eine der oben genannten Methode können Sie den letzten Eingabe-ID erhalten.

+0

No.Call zu einer Member-Funktion getInsertID() on boolean Dieser Fehler wirft. – Sheen

Verwandte Themen