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
Айбек
и втором случае, данные придут отфильтрованные, то есть проверка на гендер
Korg
Парни, а как выбрать 2 Image с 2-мя разными User?
Anonymous
Я вставил в свой UserService метод
Hash::make($password))
что прописать куда (phpDoc), чтобы IDE не подчеркивало класс, типа класс не найден? Ide-helper установлен.
VA
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
совпадения вообще не должно быть)
pa[aad
Anonymous
используй просто функцию bcrypt
Да я хотел, но не знаю, в последней версии laravel это одно и тоже или нет. Может в этом Hash используется более современный метод?
pa[aad
возьми и проверь если не уверен
Vadim
Anonymous
Anonymous
Vadim
Vadim
Anonymous
((
Anonymous
Мышкой?
Я не могу понять что делает этот Hash::make(), потому что он спрятан за фасадом. Как найти какой класс принадлежит этому методу? и сам метод
Vadim
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();
Vadim
Anonymous
Vadim
Нормально
Что делает интерпретатор, когда не может найти метод?
Anonymous
или invoke
Vadim
Vadim
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
я нашел метод
Anonymous
public function make($value, array $options = [])
{
return $this->driver()->make($value, $options);
}
VA
а тот метод, что вызывается - это инстанциирование класса, полученного по аксесору в DIке, и использование метода уже не на фасаде, а на инстансе не-фасадного класса
VA
по этому-то и подчеркивает
Anonymous
Я не могу понять какой внутри в глубине используется метод, можно ли его заменить bcrypt
Vadim
Anonymous
public function getDefaultDriver()
{
return $this->app['config']['hashing.driver'] ?? 'bcrypt';
}
видимо здесь
Anonymous
То есть если я не меняю дефолтный метод, то выбирается метод bcrypt, как я понимаю
Anonymous
.....\HashManager, наверное?
ඞ
Anonymous
Другими словами, технически между методами
Hash::make($password)
и
bcrypt($password)
нет никакой?
Anonymous
Как считаете, есть ли смысл ссылку (токена) проверки адреса электронной почты делать недействительной по прошедствии какого-то времени? Если да, то почему?
Nik
Евгений
Доброй ночи. Увжааемые подскажите, пожалуйста-посылаю из формы ajax, после его успешного выполнения делаю редирект страницы. Как я могу из JS сделать flash сообщение на новой странице?
Anonymous
А если подумать?
Так вот сижу и думаю. Единственное, что приходит в голову, что если ссылка так и останется неактивированной, а почту угонят, то могут активироваться не те люди. Ну и даже если так, то что? Ну зарегистрируются другие, какая разница.
А У Вас какие соображения?
Nik
Nik
Anonymous
У меня нету ТЗ )) Я сам для себя делаю простой пробный проект на Ларавел. Но хочется по феншую
Anonymous
Если не ошибаюсь, то в Yii ссылка на проверку генерировалась с временнОй меткой. Или это была ссылка на смену пароля. Не помню уже. Вот и ищу аргументы
Anonymous
То есть в принципе, это на безопасность не влияет, так?
Anonymous
)) я без фанатизма
Alexander
Посоветуйте пожалуйста какие-то компоненты для реализации загрузчика изображений. Нужен мультиселект и выбор главного изображения
Сергей
Есть какая-то принципиальная разница между использованием hasOne('ModelName') и ModelName::find($this->SomeID)?