私は、データベース内の1人のユーザーで動作するモデルを持っています。
これは、ユーザーに小さな変更をたくさん行うように設計されているので、データベースを複数回クエリする代わりに、モデルのコンストラクタですべてのユーザーの情報を取得し、残りの部分を通じてその情報を処理することにしました(データベースを更新するのではなく、私が持っている配列を更新することになります)。次に、その配列をデストラクターのデータベースに保存し直します。Codeigniter、デストラクタにない場合はモデル保存コードをどこに実行するのですか?
これはうまくいきますが、もう少し読んできましたが、デストラクタ(データベースの更新クエリを実行している場所)でクリーンアップしないコードを実行しないでください。 。だから、私は好奇心が強い、これを行うには良い方法はありますか?私はより良い解決策を見逃していますか?
おかげで、最大
EDIT:ここに は私がやっているものの一例である(注:この例ではしかし、ショッピングカートのクラスではなく、ユーザーのクラスです):
<?php
class cartmodel extends CI_Model
{
private $sessionPrefix = 'Cart_';
private $CartCache = array();
function __construct()
{
if ($this->session->userdata($this->sessionPrefix.'data') === FALSE)
$this->session->set_userdata($this->sessionPrefix.'data', array());
$this->CartCache = $this->session->userdata($this->sessionPrefix.'data');
parent::__construct();
}
function __destruct()
{
$this->session->set_userdata($this->sessionPrefix.'data', $this->CartCache);
}
function AddItem ($id, $count)
{
if ($count == 0 || $count == '' || !is_numeric($count))
return;
if (!isset($this->CartCache[$id]))
$this->CartCache[$id] = 0; //Initialize it so that += works
$this->CartCache[$id] += (int)$count;
}
?>
モデルコードをお知らせください。 –
'__destruct()'は、スクリプトから何か出力を得るまでに既に呼び出されていますが、私は何かが欠落していない限り、これがどのように見えるかを想像していませんが、達成しようとしている。いくつかのコードの例を追加してください。私はあなたが多かれ少なかれjavascriptに* rely *したくない限り、複数のクエリに悩まされていると思います。 –
申し訳ありませんが、コード例を追加しました – Ben