Примеры ассоциаций YII2 или пример via() или viaTable()

введите описание изображения здесь

Всем привет,

Этот пример поможет вам, как получить подробную информацию о клиенте с помощью вызова API restful,

1 ответ

Ваш вызов API должен выглядеть следующим образом: http://127.0.0.1:8080/api/web/customer?expand=orders,orderItems,products

class Customer extends \yii\db\ActiveRecord
{
/**
 * @inheritdoc
 */
public static function tableName()
{
    return 'customer';
}

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['ID', 'Name'], 'required'],
        [['ID'], 'integer'],
        [['Name'], 'string'],
        [['PhoneNo'], 'string', 'max' => 45]
    ];
}

/**
 * @inheritdoc
 */
public function attributeLabels()
{
    return [
        'ID' => 'ID',
        'Name' => 'Name',
        'PhoneNo' => 'Phone No',
    ];
}

/**
 * @return \yii\db\ActiveQuery
 */
public function getOrders()
{
    return $this->hasMany(Order::className(), ['customer_id' => 'ID']);
}

public function getOrderItems()
{
    return $this->hasMany(Orderitem::className(),['Order_id' => 'ID'  ])

            ->via('orders');
        ;
}

public function getProducts()
{
   return  $this->hasMany( Product::className() , ['ID' => 'Product_ID' ] )
           ->via('orderItems') ; 

}

/**
 * @inheritdoc
 * @return CustomerQuery the active query used by this AR class.
 */
public static function find()
{
    return new CustomerQuery(get_called_class());
}

/**
 * @info: call : http://127.0.0.1:8080/api/web/customer?expand=orders for get customer and his orders also;
 * @return type
 */
public function extraFields() 
{
        return ['orders','orderItems','products']; 
}

}

введите описание изображения здесь

Другие вопросы по тегам