За последние 24 часа нас посетили 21003 программиста и 1107 роботов. Сейчас ищет 471 программист ...

Жадная загрузка, изменить БД у связанной таблицы.

Тема в разделе "Yii", создана пользователем Artur_hopf, 13 фев 2020.

  1. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Добрый день. Допустим есть две связи:

    PHP:
    1. class OperationJr extends ActiveRecord
    2. {
    3.     public static function getDb()
    4.     {
    5.         return \Yii::$app->db3;
    6.     }
    7.  
    8.     public static function tableName()
    9.     {
    10.         return 'ОперацияЖР';
    11.     }
    12.  
    13.     public function getJobJournal()
    14.     {
    15.         return $this->hasMany(JobJournal::className(), ['Oid' => 'ЖурналРабот']);
    16.     }
    17.  
    18. }
    19.  
    20. class JobJournal extends ActiveRecord
    21. {
    22.     public static function getDb()
    23.     {
    24.         return \Yii::$app->db3;
    25.     }
    26.  
    27.     public static function tableName()
    28.     {
    29.         return 'ЖурналРабот';
    30.     }
    31.  
    32.      public function getOperationJr()
    33.     {
    34.         return $this->hasMany(OperationJr::className(), ['ЖурналРабот' => 'Oid']);
    35.     }
    36. }
    Допустим мне надо в определенном запросе поменять БД, я добавлю в конце запроса \Yii::$app->db2:
    PHP:
    1.  public function getRegistration($num)
    2.     {
    3.         $result = JobJournal::find()
    4.             ->with('operationJr')
    5.             ->where(['Номер' => $num ])
    6.             ->one(\Yii::$app->db2);
    7.  
    8.         return $result;
    9.     }
    Но, изменение БД не коснется with('operationJr').
    Подскажите как и ему можно изменить БД?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    PHP:
    1. /*
    2.         - установка взаимодействия указателя над ресурсами
    3.     */
    4.     public function setResourcePointer( string $name = 'im' ): void
    5.     {
    6.         $this -> im = &$this -> items -> images['resources'][$name];
    7.     }
    PHP:
    1.     /*
    2.         - ...
    3.     */
    4.     public function destroy(): void
    5.     {
    6.         imagedestroy ( $this -> im );
    7.     }
     
  3. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    @Artur_hopf А что у тебя вообще с БД там твориться? Чтой-то их сильно много...
     
  5. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @mkramer есть тестовая база данных, есть рабочая. И вот чтобы не плодить дубликаты файлов, просто бы в запросе менять бд и все.
    Одна и та же таблица может участвовать как в рабочем процессе, так и в чем то новом, еще тестовом.
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    @Artur_hopf, делается два конфига, для рабочей базы, и для тестовой. А не связываются таблицы из тестовой с таблицей из рабочей...
     
  7. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    db.php
    PHP:
    1. return [
    2.     'components' => [
    3.         'db1' => [
    4.            //
    5.         ],
    6.         'db2' => [
    7.            //
    8.         ],
    9.         'db3' => [
    10.             //
    11.         ],
    12.         'db4' => [
    13.            //
    14.         ],
    15.     ]      
    16. ];
    вызов так:
    PHP:
    1. \Yii::$app->db2
    --- Добавлено ---
    Ладно, там придется дублировать видимо. Ничего не поделаешь.
     
  8. zolka

    zolka Новичок

    С нами с:
    21 дек 2019
    Сообщения:
    17
    Симпатии:
    0
    \Yii::$app->db2:- это типо поиска.
    Но ты и в конфиге должен прописать коректный путь с алиасом ,и в URL тоже.