質問: year(curdate())), year(curdate()), 'some data...' ) ここで質問、jtable :: store()はjdatabasedriver :: insertobject()を使用してデータを保存するため、jtableにカスタムsqlステートメントの実行を要求できないため、これを達成するための最良の方法は何ですか?
回答: checkメソッドをテーブルクラスに追加できます。これは、デフォルトではbindの後、ただしstoreの前に実行されます。これは、レコードが有効であることを確認し、特定の行要件を処理する優れた方法です。public function check() { // only set the number if this is a new record (id = 0) if (property_exists($this, 'number') && $this->id == 0) { $db = jfactory::getdbo(); $query = $db->getquery(true); $query->select('max(`number`) + 1'); $query->from('`#__table`'); $query->where('`year` = year(curdate())'); $db->setquery($query); $this->number = $db->loadresult(); } return parent::check(); }