resetScope, defaultScope и реляционные запросы

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
xoma
Сообщения: 641
Зарегистрирован: 2009.04.02, 15:24
Откуда: Ногинск
Контактная информация:

resetScope, defaultScope и реляционные запросы

Сообщение xoma »

Всем привет!

Есть вот такой код:

Код: Выделить всё

$favorite = Favorite::model()->with('question')->findAll(); 
Все relations прописаны, все хорошо. Для модели Question прописан defaultScope.
Так вот, как можно этот самый defaultScope сбросить, т.е. можно ли как-то вызвать resetScope для параметра в методе with ?
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: resetScope, defaultScope и реляционные запросы

Сообщение slavcodev »

а как обычный scope не получается? (через двоеточие кажется)
Жду Yii 3!
Аватара пользователя
xoma
Сообщения: 641
Зарегистрирован: 2009.04.02, 15:24
Откуда: Ногинск
Контактная информация:

Re: resetScope, defaultScope и реляционные запросы

Сообщение xoma »

mc-bear писал(а):а как обычный scope не получается? (через двоеточие кажется)

Код: Выделить всё

$favorite = Favorite::model()->with('question:resetScope')->findAll(); 


если имеется в виду этот вариант, то он не работает =(
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: resetScope, defaultScope и реляционные запросы

Сообщение slavcodev »

ошибки или просто не ресетится критерий? по идее resetScope ничем не отличается от обычного scope (
Жду Yii 3!
Аватара пользователя
xoma
Сообщения: 641
Зарегистрирован: 2009.04.02, 15:24
Откуда: Ногинск
Контактная информация:

Re: resetScope, defaultScope и реляционные запросы

Сообщение xoma »

ошибок, нет, просто сброса не происходит...
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: resetScope, defaultScope и реляционные запросы

Сообщение slavcodev »

переопредели это метод, выведи там трейс-мессагу, проверь происходил ли вызов метода
Жду Yii 3!
Аватара пользователя
xoma
Сообщения: 641
Зарегистрирован: 2009.04.02, 15:24
Откуда: Ногинск
Контактная информация:

Re: resetScope, defaultScope и реляционные запросы

Сообщение xoma »

в defaultScope добавил:

Код: Выделить всё

die('defaultScope!'); 
Как при вызове

Код: Выделить всё

$favorite = Favorite::model()->with('question')->findAll(); 
Так и при вызове

Код: Выделить всё

$favorite = Favorite::model()->with('question:resetScope')->findAll(); 
этот самый die отрабатывает. Кроме этого заметил вот что, вот такой вызов:

Код: Выделить всё

$favorite = Favorite::model()->with('question:[b]notExistingMethod[/b]')->findAll(); 
- не приводит к возникновению ошибки. Так и задумано?
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: resetScope, defaultScope и реляционные запросы

Сообщение slavcodev »

ну так defaultScope понятно что сработает в обоих случаях, я имел виду про die в resetScope
Жду Yii 3!
Аватара пользователя
hyzhak
Сообщения: 23
Зарегистрирован: 2009.12.10, 22:10
Откуда: Kyiv

Re: resetScope, defaultScope и реляционные запросы

Сообщение hyzhak »

resetScope то же срабатывает, но в запросе все равно присутствует defaultScope
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: resetScope, defaultScope и реляционные запросы

Сообщение slavcodev »

так это нормально вроде, чтоб дефолтный скоуп был, ресет сбрасывает остальные, дефолтный на то и дефолтный чтоб всегда применятся
Жду Yii 3!
Аватара пользователя
hyzhak
Сообщения: 23
Зарегистрирован: 2009.12.10, 22:10
Откуда: Kyiv

Re: resetScope, defaultScope и реляционные запросы

Сообщение hyzhak »

При таком раскладе дефолтный скоп сбрасывается

Код: Выделить всё

User::model()->resetScope()->findAll(); 
а вот как его сбрость в relation - вопрос так и остается открытым. Вараинт указанный ниже не работает

Код: Выделить всё

News::model()->with('user:resetScope')->findAll();  
Аватара пользователя
hyzhak
Сообщения: 23
Зарегистрирован: 2009.12.10, 22:10
Откуда: Kyiv

Re: resetScope, defaultScope и реляционные запросы

Сообщение hyzhak »

вот в очередной раз столкунцлся с єтой проблемой. насколько я понимаю решения до сих пор нет :-(

P.S. прошлій раз проблему обошел созданием еще одной модели отнаследованной от нужно, но без defaultScope... в текущем проекте много моделей, где нужно в relation сбрасівать defaultScope - такие обходніе пути уже напрягают
egorio
Сообщения: 11
Зарегистрирован: 2011.03.24, 13:05

Re: resetScope, defaultScope и реляционные запросы

Сообщение egorio »

Если еще интересно - смотрим здесь: https://github.com/yiisoft/yii/issues/1197. Пока не уверен что не заденет что-то другое.
Аватара пользователя
hyzhak
Сообщения: 23
Зарегистрирован: 2009.12.10, 22:10
Откуда: Kyiv

Re: resetScope, defaultScope и реляционные запросы

Сообщение hyzhak »

тема интересна и никуда не пропала, но судя по тому как кьянг молча закріл тему - он или не понимает о чем идет речь или закрівает глаза на существующую проблему
egorio
Сообщения: 11
Зарегистрирован: 2011.03.24, 13:05

Re: resetScope, defaultScope и реляционные запросы

Сообщение egorio »

Уже обсуждаем другое решение, хотя оно мне не так нравится.
Ответить