code: public function with()
      {
          $with = func_get_args();
          if (isset($with[0]) && is_array($with[0])) {
              // the parameter is given as an array
              $with = $with[0];
          }
  
          if (empty($this->with)) {
              $this->with = $with;
          } elseif (!empty($with)) {
              foreach ($with as $name => $value) {
                  if (is_int($name)) {
                      // repeating relation is fine as normalizeRelations() handle it well
                      $this->with[] = $value;
                  } else {
                      $this->with[$name] = $value;
                  }
              }
          }
  
          return $this;
      }
docs: Specifies the relations with which this query should be performed.
  
  The parameters to this method can be either one or multiple strings, or a single array
  of relation names and the optional callbacks to customize the relations.
  
  A relation name can refer to a relation defined in [[modelClass]]
  or a sub-relation that stands for a relation of a related record.
  For example, `orders.address` means the `address` relation defined
  in the model class corresponding to the `orders` relation.
  
  The following are some usage examples:
  
  ```php
  // find customers together with their orders and country
  Customer::find()->with('orders', 'country')->all();
  // find customers together with their orders and the orders' shipping address
  Customer::find()->with('orders.address')->all();
  // find customers together with their country and orders of status 1
  Customer::find()->with([
  'orders' => function (\yii\db\ActiveQuery $query) {
  $query->andWhere('status = 1');
  },
  'country',
  ])->all();
  ```
  
  You can call `with()` multiple times. Each call will add relations to the existing ones.
  For example, the following two statements are equivalent:
  
  ```php
  Customer::find()->with('orders', 'country')->all();
  Customer::find()->with('orders')->with('country')->all();
  ```
  
  @return $this the query object itself