yii\db\ActiveQueryTrait::with PHP Method

with() public method

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();
public with ( )
    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;
    }