JTable-Operationで最後に保存されたデータセットのid
を取得したいと思います。
現時点で私はこれを得ました:
// Create and populate an object.
$value = new stdClass();
$value->userid = (int)$userid;
$value->type = $data['type'];
// Insert the object into the user profile table.
$handle = JFactory::getDbo()->insertObject('#__bestia_handles', $value);
次に、この保存されたオブジェクトのid
を取得します。
$handle
にはtrue
またはfalse
のみが含まれます。
この問題を解決するにはどうすればよいですか?
解決しました:-)
定義するだけ
$db = JFactory::getDbo();
以降
$db->insertObject(...)
電話できます
$db->insertid();
私のデータに複数のテーブルを使用してそれらをリンクしているのと同じ問題がありますが、これは良い方法のようですが、JTableのsaveメソッドがtrue/falseしか返さない理由がありますアイテムIDまたはNULLを返す方がはるかに便利であるため、確かにそれを返す方が良いでしょう。もちろん、自分のテーブルクラスでオーバーライドを作成してこれを行うのを止めることは何もないと思います...
MyComponentTableMyTable extends JTable
{
public function save($src, $orderingFilter= '', $ignore= '')
{
/*call parent save function and return either insertid or null depending on whether or not parent save function returns true or false */
return ( parent::save ( $src, $orderingFilter, $ignore ) ? $_db->insertid () : NULL ) ;
}
}
実際にはまだ試していませんが、うまくいかない理由はわかりません。
1行のデータを処理する場合は、JTableを使用してみてください。これは、Active Recordパターンに従います。 $row->save()
を実行した後、$row->id
は、主キーの実際の値で更新されます。