あなたも、あなたのユーザテーブルにアップラインのレベルを保存することができます。登録時にuplineを取得し、uplineのuplineなどを取得して、後でユーザーテーブルを照会するときに取得できるようにします。
私はこれを6レベル深くするので、6つのクエリが増えますが、実際には気にしません。登録は1日に100万回は発生しません。
ここに私のユーザテーブルには、私のトラフィック交換からだ...それは役立ちます願っています。ご覧のとおり、私はupline_val列を使ってサーフクレジットを保存しておきます。後で「紹介からクレジットクレジット」ボタンを使ってそのuplinesでクレームすることができます。
とメンバーを作成するためにモデルコードを登録します。
$data = array(
'username' => $username,
'password' => password_hash($password, PASSWORD_DEFAULT),
'email' => $email,
'first_name' => $first_name,
'last_name' => $last_name,
'active' => $active,
'referred_by_id' => $referred_by_id,
'referral_url' => $this->session->userdata('referral_url'),
'next_subscription_update' => $now->format("Y-m-d H:i:s"),
'email_newsletter' => $newsletter,
'autoassign_pct' => Settings_model::$db_config['autoassign_value']
);
// select upline ids
$this->db->select('referred_by_id')->from(DB_PREFIX .'user')->where('user_id', $data['referred_by_id']); // $data['referred_by_id'] is passed in the url e.g. http://example.com/register/1867
$q = $this->db->get();
if ($q->num_rows() == 1) {
$data['upline_lvl2'] = $q->row()->referred_by_id;
$this->db->select('referred_by_id')->from(DB_PREFIX .'user')->where('user_id', $data['upline_lvl2']);
$q = $this->db->get();
if ($q->num_rows() == 1) {
$data['upline_lvl3'] = $q->row()->referred_by_id;
$this->db->select('referred_by_id')->from(DB_PREFIX .'user')->where('user_id', $data['upline_lvl3']);
$q = $this->db->get();
if ($q->num_rows() == 1) {
$data['upline_lvl4'] = $q->row()->referred_by_id;
$this->db->select('referred_by_id')->from(DB_PREFIX .'user')->where('user_id', $data['upline_lvl4']);
$q = $this->db->get();
if ($q->num_rows() == 1) {
$data['upline_lvl5'] = $q->row()->referred_by_id;
$this->db->select('referred_by_id')->from(DB_PREFIX .'user')->where('user_id', $data['upline_lvl5']);
$q = $this->db->get();
if ($q->num_rows() == 1) {
$data['upline_lvl6'] = $q->row()->referred_by_id;
}
}
}
}
}
// ...etc...
$this->db->insert(DB_PREFIX .'user', $data); // $data is inserted here
私は私が推測できることについてのすべてです。
あなたのコードを教えてください。スタックオーバーフローはコードを書くサービスではありません。 –