我想在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;
答案 0 :(得分:0)
如果你可以在activerecord类中使用关系,那就更好了。
答案 1 :(得分:0)
如果要使用两个表来拥有自己的activerecord,则应重写baseActiveRecord
类的某些功能。
说明如下所示,但是您应该根据自己的情况进行测试和更改:
attributes()
方法并定义table2中可能存在的一些新属性。find()
方法或创建一个新的ActiveQuery
类以在find方法中使用,以在搜索中使用find时创建一些复杂的select或join并选择表1和表2中的所有字段。 / li>
save()
和update()
活动记录方法以将表2字段保存在数据库中。在将数据保存到数据库中时,请注意在重写的保存和更新方法中使用事务。