如何在codeigniter中创建表结果?

时间:2015-10-30 11:16:14

标签: php mysql 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美元,如果在该用户之前没有付款,他们的上次付款日期为否(获得所有收入)

然后将结果添加到表“付款”。新的Payout_Date到Payment_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

如何在Codeignaiter Controller和Model上编写

对不起我的英语语法错误。

1 个答案:

答案 0 :(得分:0)

在考虑CodeIgniter之前,请考虑要运行的数据库查询。当满足两个条件时,您需要来自两个表的所有数据。所以当你的收入超过10美元并且(我猜是)当From_Date在最新的Payment_Date之前或之前,但是在之前的Payment_Date之后,你想要一起加入这些表并显示结果。

在CodeIgniter中,它们为您提供了一种更宽容的编写查询的方式,但机制仍然相同。

所以你可能会写一个单一的,粗糙的查询,一次完成这一切,但将它分成几个查询要容易得多:

  1. 查询今天之前的最近一次付款日期。
  2. 查询之前的付款日期。
  3. 查询这两个日期之间的用户收入。
  4. 我会在查询3中向您展示您想要的最佳猜测,然后指向the CI Documentation。我假设您在扩展CI_Model的类中执行此查询。我试过使用最简单的读取语法。此外,我假设您将从“收入”列中的值中删除$this->db->select('*'); $this->db->select($currentPaymentDateFoundInQuery1'. AS Payment_Date'); // add a column with Payment_Date $this->db->from('User'); $this->db->join('Earning', 'Earning.Userid=User.id'); $this->db->where('Earning >', 10); $this->db->where('Date >', $previousPaymentDateFromQuery2); $this->db->where('Date <=', $currentPaymentDateFoundInQuery1); $query = $this->db->get(); ,并使用一个数字。 (我没有测试过这段代码,但它应该让你接近。)

    matrix

    这可能不是您正在寻找的,但它应该让您开始。第二个select语句只是在结果中使用当前付款日期创建一个额外列。