为使用多个表创建一个activerecord

时间:2016-03-09 11:04:25

标签: php activerecord model yii2

我想在yii2中创建一个活动记录,与基于 activerecord 的其他模型相同,但区别在于我想使用多个表。

例如,我在数据库中有一个名为orders的表和另一个表order-items

订单商品是按顺序购买用户并且 order-id 连接到orders表的产品。现在我想要一个模型来控制它们并使用活动记录功能。

例如,我可以获得保存在订单表中的客户 id 以及保存在order-items中的产品数组。

看下面的代码:

//get name of customer that saved in order table

$customer = $model->customer;

//get an array of products saved in order-item

$items = $model->items;

//get number of item 3 saved in order-item

$num = $items[3]->number;

2 个答案:

答案 0 :(得分:0)

如果你可以在activerecord类中使用关系,那就更好了。

Refer this link

答案 1 :(得分:0)

如果要使用两个表来拥有自己的activerecord,则应重写baseActiveRecord类的某些功能。

说明如下所示,但是您应该根据自己的情况进行测试和更改:

  1. 将一个表定义为基本表。
  2. 重写attributes()方法并定义table2中可能存在的一些新属性。
  3. 重写find()方法或创建一个新的ActiveQuery类以在find方法中使用,以在搜索中使用find时创建一些复杂的select或join并选择表1和表2中的所有字段。 / li>
  4. 重写您的save()update()活动记录方法以将表2字段保存在数据库中。

在将数据保存到数据库中时,请注意在重写的保存和更新方法中使用事务。