Korg
я что-то тоже засомневался)
Korg
Парни, помогите ещё мозгами пораскинуть над таким вопросом) Есть сущность Image и User, юзер имеет много изобразений, у юзера есть пол gender. Мне нужно получить 2 изображения, пользователь которых одного пола. Пол выбирается рандомно. При этом Image выбирается по неким параметрам `$images = Image::notviewed() ->notmine() ->priority() ->available() ->active() ->inRandomOrder() ->take(2) ->get();` Из этого важно то, что при каждом запросе кол-во изображений постоянно уменьшается, т.е. в один момент может не оказаться изображений, пользователь которых мужского пола, и тогда нужно попробовать взять 2 изображения, пользователь которых обратного пола. И как-то в моей голове вырисовывается схема с кучей запросов) Вопрос, как написать скоп, в котором будет отбираться Image по полю gender его User?
Евгений
whereHas
Айбек
->whereHas('user', function($query) use($gender) { $query->where('gender', $gender) }) или сделать отношения public function male(){} public function female(){} $genders = ['male', 'female']; ->whereHas($genders[rand(0,1)])
Korg
->whereHas('user', function($query) use($gender) { $query->where('gender', $gender) }) или сделать отношения public function male(){} public function female(){} $genders = ['male', 'female']; ->whereHas($genders[rand(0,1)])
Да, спасибо. Так работает. А есть разница между ->with(['user' => function ($q) use($gender){ $q->where('gender', $gender); }]) и ->whereHas('user', function($query) use($gender) { $query->where('gender', $gender); }) Или по сути это одно и тоже?
Айбек
в первом случае, ты загружаешь отношение(два запроса) во втором просто проверяешь есть ли юзер(подзапрос)
Айбек
и втором случае, данные придут отфильтрованные, то есть проверка на гендер
Korg
Парни, а как выбрать 2 Image с 2-мя разными User?
Anonymous
Я вставил в свой UserService метод Hash::make($password)) что прописать куда (phpDoc), чтобы IDE не подчеркивало класс, типа класс не найден? Ide-helper установлен.
VA
Image::with('user')->random(2);
Korg
Image::with('user')->random(2);
ну так же тоже можно попасть на одного и того же юзера, разве нет?
VA
можно, по этому отталкивайся от юзера
VA
User::with('image')->where('gender', 'female')->random(2);
VA
и вытягивай из image рандомный элемент
Korg
можно, по этому отталкивайся от юзера
От юзера не оно, у меня вот такая выборка `Image::notviewed() ->notmine() ->priority() ->available() ->active() ->whereHas('user', function($query) use ($gender) { $query->where('gender', $gender); }) ->inRandomOrder() ->take(2) ->get();`
Vadim
В ТЗ не было ничего про случайность. Бери первый и последний в кортеже. Худший случай - они совпадут.
Vadim
Андрюха, привет;)
VA
Хай)
VA
на крайняк можно решафлить
VA
if image[1]->user->userId === image[2]->user->userId: do reshuffle done
VA
псевдокод, если что
Korg
совпадения вообще не должно быть)
Anonymous
используй просто функцию bcrypt
Да я хотел, но не знаю, в последней версии laravel это одно и тоже или нет. Может в этом Hash используется более современный метод?
pa[aad
возьми и проверь если не уверен
Anonymous
Vadim
PhpStorm
Import class?
Anonymous
Import class?
а как правильно написать?
Anonymous
((
Anonymous
Мышкой?
Я не могу понять что делает этот Hash::make(), потому что он спрятан за фасадом. Как найти какой класс принадлежит этому методу? и сам метод
Anonymous
Например, посмотреть в пакете.
Ну вот я нашел какой-то класс, но там нет метода make()
Anonymous
https://laravel.com/api/5.6/Illuminate/Support/Facades/Hash.html
VA
От юзера не оно, у меня вот такая выборка `Image::notviewed() ->notmine() ->priority() ->available() ->active() ->whereHas('user', function($query) use ($gender) { $query->where('gender', $gender); }) ->inRandomOrder() ->take(2) ->get();`
Так, если я правильно понимаю, то на image должен быть какой-то user_id. Коллекцию и так получаешь, и не важно, позьмешь ты 2 записи, или двадцать. по этому я делал бы так: $images = Image::notviewed() ->notmine() ->priority() ->available() ->active() ->whereHas('user', function($query) use ($gender) { $query->where('gender', $gender); }) ->inRandomOrder() ->take(20) ->get(); $images->sortBy('user_id'); $first_image = $images->first(); $second_image = $images->last();
Anonymous
Vadim
Нормально
Что делает интерпретатор, когда не может найти метод?
Anonymous
или invoke
Vadim
или invoke
Читаем доку!
Anonymous
Что делает интерпретатор, когда не может найти метод?
Если я прописываю этот класс в IDE, то он ругается, что множественное определение класса (видимо один от ide_helper, второй от фасадов), как я понимаю
Anonymous
Ладно, переживу как-нибудь. Не все сразу начинающему в первые три дня на ларавел
Anonymous
Все. Вопрос снят.
ඞ
ide-helper:generate, ide-helper:meta запускали?
ඞ
ок
Anonymous
Конечно! запускал
ඞ
тогда странно
Anonymous
Я еще дописываю сервис, поэтому не смогу проверить будет ли ошибка. Уверен что код рабочий, просто бесит, что ide красным подчеркивает мой UserService
Anonymous
тогда странно
В ide_helper запись есть class Hash extends \Illuminate\Support\Facades\Hash {}
VA
проблема в том, что у самого фасада нет никаких методов, кроме getFacadeAccessor
Vadim
Андрей, предполагалось, что он сам до этого дойдёт (
Anonymous
я нашел метод
Anonymous
public function make($value, array $options = []) { return $this->driver()->make($value, $options); }
VA
а тот метод, что вызывается - это инстанциирование класса, полученного по аксесору в DIке, и использование метода уже не на фасаде, а на инстансе не-фасадного класса
VA
по этому-то и подчеркивает
Anonymous
Я не могу понять какой внутри в глубине используется метод, можно ли его заменить bcrypt
Anonymous
public function getDefaultDriver() { return $this->app['config']['hashing.driver'] ?? 'bcrypt'; } видимо здесь
Anonymous
То есть если я не меняю дефолтный метод, то выбирается метод bcrypt, как я понимаю
Anonymous
.....\HashManager, наверное?
Anonymous
Другими словами, технически между методами Hash::make($password) и bcrypt($password) нет никакой?
Anonymous
Как считаете, есть ли смысл ссылку (токена) проверки адреса электронной почты делать недействительной по прошедствии какого-то времени? Если да, то почему?
Евгений
Доброй ночи. Увжааемые подскажите, пожалуйста-посылаю из формы ajax, после его успешного выполнения делаю редирект страницы. Как я могу из JS сделать flash сообщение на новой странице?
Anonymous
А если подумать?
Так вот сижу и думаю. Единственное, что приходит в голову, что если ссылка так и останется неактивированной, а почту угонят, то могут активироваться не те люди. Ну и даже если так, то что? Ну зарегистрируются другие, какая разница. А У Вас какие соображения?
Anonymous
У меня нету ТЗ )) Я сам для себя делаю простой пробный проект на Ларавел. Но хочется по феншую
Anonymous
Если не ошибаюсь, то в Yii ссылка на проверку генерировалась с временнОй меткой. Или это была ссылка на смену пароля. Не помню уже. Вот и ищу аргументы
Anonymous
То есть в принципе, это на безопасность не влияет, так?
Anonymous
)) я без фанатизма
Alexander
Посоветуйте пожалуйста какие-то компоненты для реализации загрузчика изображений. Нужен мультиселект и выбор главного изображения
Сергей
Есть какая-то принципиальная разница между использованием hasOne('ModelName') и ModelName::find($this->SomeID)?