chocoboxxf

chocoboxxf

这家伙有点懒,还没写个性签名!

  • 财富值64814
  • 威望值120
  • 总积分67014

个人信息

  • 如果你在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的记录

  • 2015-06-07 已签到
    连续签到22天,获得了20个金钱
  • 2015-06-06 已签到
    连续签到21天,获得了20个金钱
  • 2015-06-05 已签到
    连续签到20天,获得了20个金钱
  • on的参数值是预设的scenario,一个是需要先指定scenario,$userxg->scenario = 'userxg';

  • 2015-06-04 已签到
    连续签到19天,获得了20个金钱
  • 可以用的,如果是用的yii自带的CreateAction,要注意的是,他在读取参数的时候使用的是$model->load(Yii::$app->getRequest()->getBodyParams(), ''); 方法load在读取参数时,没有设rule或者不在safeAttributes里的字段不会自动读取,具体可以参考下Yii2 安全字段

  • 回答了问题 大数据导出

    导出脚本前临时调整下最大内存上限或者最大执行时间试试,比如
    ini_set('memory_limit', '512M'); // 最大内存为512M
    ini_set('max_execution_time', 120); // 最大执行时间为120秒

  • 2015-06-03 已签到
    连续签到18天,获得了20个金钱
  • 2015-06-02 已签到
    连续签到17天,获得了20个金钱
董事长 等级规则
67014/100000
资料完整度
70/100
用户活跃度
100/100

Ta的关注

12

Ta的粉丝

19

Ta的访客

52