Я пытаюсь создать высокопроизводительную модель в YII2. У меня подключено 2 базы данных (MSSQSL: собственная и ERP-система) - все работает. Сейчас я пытаюсь загрузить заказ из системы ERP. Система распределяет всю информацию о заказах по разным таблицам.
стол: заказ
CREATE TABLE [dbo].[Order](
[ID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[orderid] [int] NULL,
[name] [varchar](10) NULL,
[type] [tinyint] NOT NULL,
[lastupdate] [smalldatetime] NOT NULL,
....
таблица: информация для заказа1
CREATE TABLE [dbo].[Order_Information1](
[ID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[Parameter] [int] NULL,
[Value] [varchar](255) NULL,
....
таблица: информация для заказа2
CREATE TABLE [dbo].[Order_Information2](
[ID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[Parameter] [int] NULL,
[Value] [varchar](255) NULL,
....
Я создал для всех моделей, а также могу получить индивидуальный доступ к таблицам. В модели заказа я построил класс GetInformationData:
public function getInformationData ()
{
$description = Order_Information2::find()->select('Value')->where(['ID' => $this->id, 'Parameter' => 'txt_ description'])->one();
//...
$this->description = !empty($description) ? $description->Value : '';
//...
}
//...
Это работает, но очень медленно. Каждый заказ имеет около 500 параметров
и это займет половину вечности, пока все не загружено; - (
Я попытался подключить модель, но, к сожалению, безуспешно.
class Order extends ActiveRecord
{
// ...
public function getOrder_Information1()
{
return $this->hasMany(Order_Information1::className(), ['id' => 'id']);
}
}
class Order_Information1 extends ActiveRecord
{
// ...
public function getOrder()
{
return $this->hasOne(Order::className(), ['id' => 'id']);
}
}