yii\db\ActiveRecord::link()怎么用的?

weixin_38052002 2019-09-11 03:13:49
官方文档没怎么看懂……
...全文
8 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38061090 2019-09-11
  • 打赏
  • 举报
回复
如果你在class Order里定义了一个class Customer的关联(如order表里有一个customer_id的字段),在创建Order记录的时候,可能会有类似这样的执行: $order = new Order(); $order->customer_id = $customer->id; $order->save(); 如果在Order类里定义过外键关联(如下),那就可以通过link方法用面向对象的方式来给customer_id赋值: public function getCustomer() { return $this->hasOne(Customer::className(), ['id' => 'customer_id']); } 之前创建Order对象的语句就变成: $order = new Order(); $order->link('customer', $customer); // $order和$customer不能都是新创建的对象 这里link的作用只是将外键的值填到对应字段,但如果外键关联是通过中间表来实现的,那link会自动创建中间表记录。比如 有order表,item表,order_item表来存储order和item的关联。参考Relations via a Junction Table 如果在Order类里定义过外键关联如下: public function getItems() { return $this->hasMany(Item::className(), ['id' => 'item_id']) ->viaTable('order_item', ['order_id' => 'id']); } 那就可以通过link方法来关联Item对象: $order = new Order(); $order->link('items', $item); order_item表中会自动创建一条order_id为$order->id, item_id为$item->id的记录
weixin_38066498 2019-09-11
  • 打赏
  • 举报
回复
外键关联的,则会在外键赋值后会自动保存数据

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧