【问题标题】:Setting relations Grocery CRUD设置关系 Grocery CRUD
【发布时间】:2011-12-04 07:06:24
【问题描述】:

我有两张桌子

Users Table => id , username
OrdersTable => order_id,user_id, qty,total

我需要用 . 链接这两个表。

id 和 user_id。

我怎样才能用杂货 CRUD 做到这一点。

【问题讨论】:

  • 不。为订单表中的 CRUD 完全绕过 Grocery_crud
  • 想必您尝试了我的答案中的解决方案?
  • 并非如此。刚刚浏览了一下。认为通过自定义代码来做这件事会容易得多并继续下去。

标签: codeigniter crud grocery-crud


【解决方案1】:

如果您使用OrdersTable 作为主表,则可以使用1:1 关系使用set_relation()。如果您正在查看订单并想查看/设置该订单属于哪个用户,这就是这种情况。

$crud->set_table('OrdersTable');
$crud->set_relation('id','UsersTable','username');

这将允许您为特定订单选择哪个用户。

然而,一个用户可能有很多订单——1:n 关系。如果 UsersTable 是您的主表,即您在 CRUD 中查看 user 并希望查看所有关联订单,就会出现这种情况。

此方法需要一个中间表,用于链接两个现有表,并对现有表结构稍作更改。您需要删除 OrdersTable 中的 user_id。中间表,为了参数称为UserOrdersTable 需要以下列。

user_id INT
order_id INT
priority INT

然后您可以使用set_relation_n_n() 方法添加关系。

然后,您可以在查看OrdersTable 时反转set_relation_n_n() 调用,以便查看哪个用户下了订单。

总而言之,使用set_relation_n_n()1:n 关系将允许您查看用户的订单以及用户的订单。

【讨论】:

    【解决方案2】:

    如果你的意思是查询,那么;

    选择 u.id、u.username、o.order_id、o.qty、o.total 来自用户 left join order o on(o.user_id = u.id) 其中 1=1

    【讨论】:

      猜你喜欢
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 2013-12-14
      相关资源
      最近更新 更多