我想在 yii2 中创建一个活动记录,与其他基于 activerecord 的模型相同,但不同之处在于我想使用多个表。
例如,我在数据库中有一个名为 orders
的表和另一个表order-items
项是按订单购买用户的产品,订单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;
如果可以在活动记录类中使用关系,那就更好了。
参考此链接
如果你想
使用两个表拥有自己的活动记录,你应该重写baseActiveRecord
类的一些函数。
说明如下所示,但您应该在自己的情况下进行测试和更改:
- 将一个表定义为基表。
- 重写
attributes()
方法并定义表2中可能存在的一些新属性。 - 重写
find()
方法或创建一个新的ActiveQuery
类以在查找方法中使用,以便在搜索中使用 find 时创建一些复杂的选择或联接,并选择表 1 和表 2 中的所有字段。 - 重写
save()
并update()
活动记录的方法,以将表 2 字段保存在数据库中。
在数据库中保存数据时,请注意在重写的保存和更新方法中使用事务。