如何为Codeigniter创建模型


How to create model for Codeigniter?

我的数据库上有4个表

表"用户"

id  |  user
-----------
55   |  Jhon    
56   |  Krish   
57   |  Boss 

表"支出"

id  |  Payout_Date
------------------
1   |  31.10.2015
2   |  24.10.2015
3   |  17.10.2015

表"盈利"

Userid  |  Date       |  Earning
------------------------------------
55      |  31.10.2015 |  5$
56      |  31.10.2015 |  1$
57      |  31.10.2015 |  3$
55      |  30.10.2015 |  5$
56      |  30.10.2015 |  12$
57      |  30.10.2015 |  0$
55      |  29.10.2015 |  5$
56      |  29.10.2015 |  4$

当我添加新的付款日期(Payout_date)时,我想找到谁在新支付日期之间的最后一次支付日期内赚取>10美元,如果没有在该用户之前支付,他的最后一次付款日期为否(获取他的所有收入)。

然后将结果添加到表"Payment"中,并将新的Payout_Date添加到Payment_Date。他们的最后付款日期是From_Date。

表"付款"

 id | Userid   |  From_Date  |  Payment_Date |  Earning  |  Status
------------------------------------------------------------------
  1 |  55      |  24.10.2015 |  31.10.2015   |  12$      |  0
  2 |  56      |  24.10.2015 |  31.10.2015   |  17$      |  0

如何将其写在Codeigniter控制器和模型上?

您需要将问题分解为多个部分:查找当前付款日期,查找用户上次付款时间,添加此后的收入,如果>10美元则进行筛选。

以下是一个视图的示例(我实际上没有运行这个,所以可能存在语法错误)

SELECT Earning.Userid, sum(Earning.Earning) earning_since_last
FROM
/* Find current payout Date */
(SELECT MAX(Payout_Date) current_payout_date FROM PAYOUT) as curr_payout,
/* find last time user paid */
(SELECT Userid, MAX(Payout_Date) last_payout_date
  FROM PAYOUT 
  GROUP BY Userid) last_payout,
Earning
WHERE Earning.date <= curr_payout.current_payout_date
  and last_payout.Userid = Earning.Userid
  and earning.date > last_payout.last_payout_date
GROUP BY Earning.Userid
HAVING SUM(Earning.Earning) >= 10