YiiFramework Active Record - работа с безымянной функцией в with

Teskuroi

Новичок
Метод контроллера:
PHP:
global $good_attachment_types_id;

$good_id = Yii::$app->request->get()['id'];

$attachmentTypes = AttachmentType::findAll([
    'is_public' => AttachmentType::IS_PUBLIC,
    'model' => AttachmentType::MODEL_CATALOG_GOOD
]);

$good_attachment_types_id = $category_attachment_types_id = [];
foreach ($attachmentTypes as $attachmentType) {
    $good_attachment_types_id[] = $attachmentType->id;
}

$attributes = CatalogGoodAttributeType::find()->all();

/** @var CatalogGood $good */
$good = CatalogGood::find()->where([
    'id' => $good_id,
    'is_deleted' => CatalogGood::STATUS_NOT_DELETED
])->with([
    'childrenGoods.attachments' => function ($query) {
        global $good_attachment_types_id;
        /** @var $query ActiveQuery */
        $query->andWhere(['attachment_type_id' => $good_attachment_types_id]);
    },
    'childrenGoods.textures',
    'childrenGoods.activeDiscount',
    'compositions.marks',
    'attachments' => function ($query) {
        global $good_attachment_types_id;
        /** @var $query ActiveQuery */
        $query->andWhere(['attachment_type_id' => $good_attachment_types_id]);
    },
    'textures',
    'activeDiscount',
    'goodAttributes'
])->one();

return $this->render('meta-good', [
    'attachmentTypes' => $attachmentTypes,
    'attributes' => $attributes,
    'good' => $good
]);
Естественно $good_attachment_types_id в безымянной функции равен NULL. Ума не приложу как сделать так, чтобы добиться нужного функционала. Подскажите, пожалуйста.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
PHP:
global $good_attachment_types_id;
дальше читать не стал
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@Redjik, это он меня удачно подколол в ответ на то что я его все время троллю ActiveRecord-ом )))
 

Teskuroi

Новичок
@Teskuroi, эм, а в чем проблема с js?
Вы только не подумайте, я очень люблю js, просто "с горяча" попробовал достучаться до переменной из безымянной функции без use, как в js, а когда не удалось началось уродство с global. Резюмируя, проблема не с js, а с тем, что я вовремя не переключился на php.
 

Teskuroi

Новичок
действительно, @Вурдалак, в чем проблема с Active Record? :D Люди не понимают, может, объяснишь?
Я знаю, что Active Record совсем не подходит для многих задач ввиду своей тяжести, как например, формирование отчета. Но также есть задачи, для которых его использование очень удобно, как в случае формирования списка товаров в Интернет-магазине. Поэтому мне не совсем понятен ваш троллинг.
 

Teskuroi

Новичок
Спасибо. На всякий случай спрошу - имеется в виду конфликтность в использовании паттернов, т.е. следует добавить звено поведения между бизнес-логикой и структурой данных?

P.S. Совершенно не понимаю людей, которые в выборе между глумлением, помощью и бездействием, выбирают глумление.
 
  • Like
Реакции: WMix

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@Teskuroi, я вполне однозначно указал к кому обращался. Чтобы понять, надо было видеть наши флеймы на эту тему последние года три.

> Совершенно не понимаю людей
ага, мне тоже приятно познакомиться
 
Последнее редактирование:
Сверху