These are chat archives for LaravelRUS/chat

14th
Jul 2017
Dave
@aios
Jul 14 2017 01:21
Как через контейнер сделать подмену запрашиваемого интерфейса
Точнее класса
вот он хочет допустим Some\Name\Space\Generator
как мне передать ему другую реализацию?
Это ведь бинд епта?
cgurubest
@cgurubest
Jul 14 2017 06:04

Добрый день, подскажите, как сейчас правильно ставить Cookie
пробую так:

$cookie = cookie('name', 'value', '10');
return view('blade', $data)->withCookie($cookie);

но кука не ставится.

KarmaBot
@KarmaBot
Jul 14 2017 06:04
@cgurubest, здравствуй.
Vladimir Kikot
@shoxy
Jul 14 2017 06:14
@cgurubest Cookie::queue(cookie('name', 'value', 10))
Ваня Devium
@webdevium
Jul 14 2017 06:18
@aios разобрался?
Dave
@aios
Jul 14 2017 06:22
@webdevium с чем?
Ваня Devium
@webdevium
Jul 14 2017 06:22
@aios с биндом
Dave
@aios
Jul 14 2017 06:25
@webdevium а да - это не то что мне нужно было
там был прямой вызов
а не через контейнер
пришлось переопределять все подряд
Ваня Devium
@webdevium
Jul 14 2017 06:27
ужыс
cgurubest
@cgurubest
Jul 14 2017 06:29
@shoxy Спасибо, это работает!
KarmaBot
@KarmaBot
Jul 14 2017 06:29
Спасибо (+1) для @shoxy принято! Текущая карма +3.
Ваня Devium
@webdevium
Jul 14 2017 06:30
@cgurubest а ты понял почему работает?, или так.. если завелось - то ок, в следующий раз работать не будет - опять буду спрашивать.
cgurubest
@cgurubest
Jul 14 2017 06:31
Я не видел этого в документации, но вероятно вся магия в queue()
@cgurubest
cookie will not be sent back to the client unless it is attached to a response instance
cgurubest
@cgurubest
Jul 14 2017 06:36

Да, это я понял.
Я сделал немного иначе, пока ждал ответа.
Я засунул return response($view )->cookie($cookie);
Чтобы продолжить работать с view
если ранее я делал
return view
то сейчас пришлось
return response->cookie($cookie);

Ну или тот способ который подсказали вы, но с ним не все понятно

так как я не понял магию queue()
Vladimir Kikot
@shoxy
Jul 14 2017 06:39
@cgurubest Queue a cookie to send with the next response.
cgurubest
@cgurubest
Jul 14 2017 06:41
О! теперь понятней. А где описаны эти методы
В документации? или нужно где то еще смотреть?
Ваня Devium
@webdevium
Jul 14 2017 06:43
@cgurubest исходники
Vlad Shcherbin
@VladShcherbin
Jul 14 2017 08:42
@cgurubest тут можно глянуть
Ваня Devium
@webdevium
Jul 14 2017 08:58
@VladShcherbin для хидеров такое есть?
Max Krestovskiy
@mkrestovskiy
Jul 14 2017 08:59
привет всем
магия какая то из загрузкой файла, помогите
когда загружаю все типы файлов кроме psd - $request->all() видит это
click
а когда psd - то его нет
KarmaBot
@KarmaBot
Jul 14 2017 08:59
@mkrestovskiy, и тебе привет ;)
Vlad Shcherbin
@VladShcherbin
Jul 14 2017 09:00
@webdevium этого не знаю
Ваня Devium
@webdevium
Jul 14 2017 09:00
@VladShcherbin ок
@mkrestovskiy ну подумаешь, либа не может определить psd))
Max Krestovskiy
@mkrestovskiy
Jul 14 2017 09:02
там ведь любой формат может быть, а если оно его не определяет - значит и не видит?
Ваня Devium
@webdevium
Jul 14 2017 09:02
не видит формат
Vlad Shcherbin
@VladShcherbin
Jul 14 2017 09:02
@webdevium может только это, больше там вроде нет ничего
Ваня Devium
@webdevium
Jul 14 2017 09:02
файл не может распарсить
Max Krestovskiy
@mkrestovskiy
Jul 14 2017 09:02
@webdevium понял, благодарю
KarmaBot
@KarmaBot
Jul 14 2017 09:02
Спасибо (+1) для @webdevium принято! Текущая карма +179.
Ваня Devium
@webdevium
Jul 14 2017 09:05
@VladShcherbin похоже на правду, но мне в мидлваре надо добавить, а там приходится $response = $next($request) делать. Не удобненько. Думал, очередь для хидеров есть...
Vlad Shcherbin
@VladShcherbin
Jul 14 2017 09:06
не, такого, видимо, нет
Anton Kartsev
@bigperson
Jul 14 2017 11:38
@webdevium спасибо
KarmaBot
@KarmaBot
Jul 14 2017 11:38
Спасибо (+1) для @webdevium принято! Текущая карма +180.
Mikhail Sychev
@snutworks
Jul 14 2017 11:44

Всем привет!
У меня есть Публикации, за них можно голосовать, рейтинг определяется простым суммированием значения голосов за Публикацию

public function votes() {
    return $this->hasMany(Vote::class);
}

public function getRatingAttribute() {
    return $this->votes()->sum('value');
}

Не понимаю как написать выборку которая отдаст все публикации с рейтингом (суммой голосов) больше n

KarmaBot
@KarmaBot
Jul 14 2017 11:44
Будь как дома, @snutworks, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
Mikhail Sychev
@snutworks
Jul 14 2017 11:48
Можно наверное сделать лефтджоин и селект с суммой в качестве агрегатора, а потом это всё отфильтровать, но не хотелось бы всё селектить
Ваня Devium
@webdevium
Jul 14 2017 11:48
@snutworks
public function getRatingAttribute() {
    return $this->votes()->sum('value');
}
это работает когда ты уже вытащил записи
Mikhail Sychev
@snutworks
Jul 14 2017 11:49
@webdevium я знаю да, для отрисовки этого хватало
@webdevium подумал прикрутить фильтрацию и запнулся
Ваня Devium
@webdevium
Jul 14 2017 11:50
@snutworks $models->sort(function($model) { return $model->rating; })
посмотри в сторону коллекции
Mikhail Sychev
@snutworks
Jul 14 2017 11:51
@webdevium ну я в общем сделал выборку всего, фильтранул коллекцию и обрезал по страницам и вернул пагинатор, не очень хорошо конечно...
Ваня Devium
@webdevium
Jul 14 2017 11:52
@snutworks заджойни
Mikhail Sychev
@snutworks
Jul 14 2017 11:52
@webdevium а какая разница, я всё равно внутри выборки по агрегатору фильтровать не могу же
Ваня Devium
@webdevium
Jul 14 2017 11:53
@snutworks Model::join('votes'...)->orderByRaw('sum(votes.*)')
в таком стиле
Mikhail Sychev
@snutworks
Jul 14 2017 11:54
@webdevium сча попробую провернуть, спасибо
KarmaBot
@KarmaBot
Jul 14 2017 11:54
Спасибо (+1) для @webdevium принято! Текущая карма +181.
Andrei Sosnov
@atehnix
Jul 14 2017 11:55
Когда публикаций станет дофига - будет весело наблюдать за производительностью этого всего)
Mikhail Sychev
@snutworks
Jul 14 2017 11:56
@atehnix уот уот, я сам опечален
projct1
@projct1
Jul 14 2017 12:00
подскажите плз, перед выполнением запроса ларка делает select count(*) же сначала, и потом если уже что-то есть, делает основной запрос нормально?
Ваня Devium
@webdevium
Jul 14 2017 12:00
@rorc нет
projct1
@projct1
Jul 14 2017 12:05
нашёл странное поведение или неизведанное мне
первый запрос делает сама ларка, я нигде не вызываю его
а второй выполняется только если найдены записи с условием status_id = '42', в данном случае записи с status_id = 42 есть, но выполняется второй запрос уже с 25 и с sum > 23
а если отключить strict mode в настройках bd (config/database.php) и во втором запросе не обнулять в select month, то нижние два запроса выполняются как надо и везде status_id = 42 и sum > 0
в чём прикол?
select count(*) as aggregate from `reports`
    where `sum` > '0' and exists (select * from `invoices` where `reports`.`id` = `invoices`.`report_id` and `status_id` = '42')
    group by `month` having count(id) >= 1

select `month` from `reports`
    where `sum` > '23' and exists (select * from `invoices` where `reports`.`id` = `invoices`.`report_id` and `status_id` = '25')
    group by `month` having count(id) >= 1 limit 20 offset 0
первый запрос верный, а во второй уже рандомные параметры в sum и в status_id летят
если поменять status_id на 999 (которых нет в базе естественно), то второй запрос уже не выполнится
Ваня Devium
@webdevium
Jul 14 2017 12:07
исходник покажи
projct1
@projct1
Jul 14 2017 12:10
@webdevium
Report::whereHas('invoice', function($Q) {
    $Q->where('status_id', 42);
})->select('month')->groupBy('month')->havingRaw('count(id) >= 1');
если убрать ->select(month) и отключить strict mode в настройках bd (config/database.php), то всё норм работает
оба запроса с одинаковыми параметрами
Ваня Devium
@webdevium
Jul 14 2017 12:13
@rorc О - оптимизация
projct1
@projct1
Jul 14 2017 12:13
@webdevium ?
откуда во втором вопросе sum > 23 вообще, когда > 0 стоит, как в первом запросе?
Ваня Devium
@webdevium
Jul 14 2017 12:14
@rorc и ты на выхлопе реально хочешь получить только строки месяцы?
projct1
@projct1
Jul 14 2017 12:15
@webdevium а как иначе группировать если по строгому режиму надо тока выбирать то поле, по которому группируешь?
Ваня Devium
@webdevium
Jul 14 2017 12:17

@rorc

Report::whereHas('invoice', function($Q) {
    $Q->where('status_id', 42);
})->select('month')->groupBy('month')->havingRaw('count(id) >= 1');

скажи словами, что ты тут хочешь вытащить

projct1
@projct1
Jul 14 2017 12:18
успешные отчёты, где количество месяцев >= 1
то есть я указываю фильтр как бы, показать мне где >= 1 успешных отчётов
Ваня Devium
@webdevium
Jul 14 2017 12:20
@rorc как можно разные отчеты за разные месяцы ПО МЕСЯЦУ сгруппировать?
projct1
@projct1
Jul 14 2017 12:21
)) ща
@webdevium короче другими словами мне надо достать отчёты, где количество успешных >= 1
Dave
@aios
Jul 14 2017 12:26
@rorc какой статус успешности?
projct1
@projct1
Jul 14 2017 12:28
@webdevium ну у отчётов есть ещё поле restoran_id, к кому они принадлежат, получается надо узнать сколько в каких ресторанах есть успешные отчёты за >=1 месяца
@aios ?
Ваня Devium
@webdevium
Jul 14 2017 12:28
@rorc ООООООО
другое дело
группируешь по restaurant_id и тогда без проблем получаешь количество отчетов
projct1
@projct1
Jul 14 2017 12:29
@webdevium то есть не статус успешности а долга в этом случае, надо узнать у каких заведений есть долг более 1 месяца
Ваня Devium
@webdevium
Jul 14 2017 12:30
@rorc пофиг
группировака -> having И whereHas
projct1
@projct1
Jul 14 2017 12:35
@webdevium всё равно подставляется sum > '23' и status_id = '25' вместо sum > 0 и status_id = 42
откуда вообще эти числа?
select count(*) as aggregate from `reports`
    where `sum` > '0' and exists (select * from `invoices` where `reports`.`id` = `invoices`.`report_id` and `status_id` = '42')
    group by `month` having count(id) >= 1
вот верный запрос как и должен быть, его делает сама ларка
Ваня Devium
@webdevium
Jul 14 2017 12:38
@rorc дай в бине полный исходник
projct1
@projct1
Jul 14 2017 12:38
потом сразу за ним же тот же запрос, только с другими значениями
select `bar_id` from `reports`
    where `sum` > '23' and exists (select * from `invoices` where `reports`.`id` = `invoices`.`report_id` and `status_id` = '25')
    group by `bar_id` having count(*) >= 1 limit 20 offset 0
@webdevium если выключить strict mode и убрать ->select('bar_id') то всё норм отрабатывает, два одинаковых запроса
Ваня Devium
@webdevium
Jul 14 2017 12:40
ну со стриктом не помогу
projct1
@projct1
Jul 14 2017 12:51
придётся иссую писать, реально баг какой-то
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 12:52

Добрый день.
Имеется у меня запрос на получение данных с сортировкой

$this->server->where('banned', 'false')->with('version', 'tags', 'statistics')->withCount('votes')->orderBy('votes_count', 'desc')->paginate(5);

Всё бы ничего, но я получаю кашу в ответ. Данные сортируются совершенно не понятным образом, но это ещё не всё есть у меня уникальная запись с id 2 так эта запись выводиться на странице 1,2 притом что она единственная.
Если выводить без ->paginate(5) через ->get() то всё в порядке.
Или же в убрать ->orderBy('votes_count', 'desc'), оставив ->paginate(5) то всё выводится без проблем, но без сортировки так как ->orderBy('votes_count', 'desc') выполняет сортировку. О,о

KarmaBot
@KarmaBot
Jul 14 2017 12:52
@fanblacksky_twitter, ну рассказывай. Как жизнь? :)
Ваня Devium
@webdevium
Jul 14 2017 12:53
@fanblacksky_twitter запрос до пагинация и с пагинацией в студию
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 12:54
@webdevium так я вставил запрос
Ваня Devium
@webdevium
Jul 14 2017 12:55
@fanblacksky_twitter шо в базу летит
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 12:55
@webdevium сек
projct1
@projct1
Jul 14 2017 13:08
@webdevium создал иссуечку) laravel/framework#20066
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 13:15

@webdevium

select `servers`.*, (select count(*) from `votes` where `servers`.`id` = `votes`.`server_id`) as `votes_count` from `servers` where `banned` = ? order by `votes_count` desc

Интернет тут подводит у меня.

Ваня Devium
@webdevium
Jul 14 2017 13:19
это какой? без пагинации?
правильно. Теперь давай с панигацией
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 13:20
@webdevium ток я с paginate я хз как получить запрос.
Ваня Devium
@webdevium
Jul 14 2017 13:20
@fanblacksky_twitter руками в appserviceprovider
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 13:35
@webdevium
select `servers`.*, (select count(*) from `votes` where `servers`.`id` = `votes`.`server_id`) as `votes_count` from `servers` where `banned` = ? order by `votes_count` desc limit 5 offset 0
Ваня Devium
@webdevium
Jul 14 2017 13:41
@fanblacksky_twitter видишь, что пагинация в запросе никак не мешает?
@fanblacksky_twitter для ясности давай вторую страницу пагинации
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 13:48
@webdevium
select `servers`.*, (select count(*) from `votes` where `servers`.`id` = `votes`.`server_id`) as `votes_count` from `servers` where `banned` = ? order by `votes_count` desc limit 5 offset 5
Ваня Devium
@webdevium
Jul 14 2017 13:48
@fanblacksky_twitter как видишь, запрос чист как коленка девственницы. Проблема в парсере пагинации, если вообще проблема есть
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 13:49
@webdevium Когда я вывожу всё одной страничкой то никаких траблов нету.
Ваня Devium
@webdevium
Jul 14 2017 13:51
@fanblacksky_twitter значит точно проблема в пагинаторе, как методе
@fanblacksky_twitter открой его исходники
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 14:03
@webdevium ааааааааа, началось. Посмотрел, но ничего не нашёл что могло вызывать проблему. Больше всего доставляет что не могу понять логику проблемы и как ->orderBy('votes_count', 'desc') влияет на неё.
Ваня Devium
@webdevium
Jul 14 2017 14:04
@fanblacksky_twitter ой все. Это не влияет.
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 14:06
@webdevium тогда как объяснить когда нету ->orderBy('votes_count', 'desc') и проблемы нет?
Ваня Devium
@webdevium
Jul 14 2017 15:16
@fanblacksky_twitter не разобрался?
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 15:57
@webdevium решил переустановить laravel сейчас перенесу всё и проверю. Ошибки я найти не могу так как даже не могу понять в чём она заключается. Всё проверил и выводил данные всеми возможными способами, но на pagination это не влияет.
McLotos
@McLotos
Jul 14 2017 16:19
Всем привет. Сегодня вот пересел на Laravel 5.4, не могу сообразить как сделать так, чтобы роуты срабатывали только если их выполнение одобрено ACL, а точнее не могу понять как вызвать ACL сразу после авторизации пользователя, перед тем как запустятся роуты. Гугл почему-то вообще ничего не вывел на эту тему, ну или я неправильно спрашивал =)
Строю большой API, нужно сделать так, чтобы при запросе к API, если юзер авторизован, то сначала постучаться к ACL и спросить, можно ли юзеру туда.
KarmaBot
@KarmaBot
Jul 14 2017 16:19
Будь как дома, @McLotos, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 16:26
@webdevium вообщем нифига.
Vlad Shcherbin
@VladShcherbin
Jul 14 2017 16:27
@McLotos добавляешь middleware, в котором проверяешь acl и в зависимости от результата отдаёшь или роут, или ещё что
McLotos
@McLotos
Jul 14 2017 16:32
@VladShcherbin Это первое что я прочитал, но вот как именно его подключить я что-то не соображу, пробовал несколько вариантов и почему-то ни один не срабатывает.
    Route::prefix('v1')->group(['middleware' => 'auth | acl'],function() {
    Route::get('application/{id}', 'API\v1\Application@findOrFail')->where('id', '[0-9]+');
});
    Route::prefix('v1')->group(['middleware' => ['auth', 'acl']],function() {
    Route::get('application/{id}', 'API\v1\Application@findOrFail')->where('id', '[0-9]+');
});
    Route::prefix('v1')->group(function() {
    Route::get('application/{id}', 'API\v1\Application@findOrFail')->where('id', '[0-9]+')->middleware('auth');
});
    Route::prefix('v1')->group(['middleware' => ['auth', 'acl']],function() {
    Route::get('application/{id}', 'API\v1\Application@findOrFail')->where('id', '[0-9]+');
})->middleware('auth');
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 16:32
@McLotos заверни код.
McLotos
@McLotos
Jul 14 2017 16:33
@fanblacksky_twitter как? 4 пробела не срабатывает =(
Vlad Shcherbin
@VladShcherbin
Jul 14 2017 16:33
@McLotos на след строку перенеси после кавычек
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 16:33
@McLotos Ctrl + Shuft + m
@McLotos :D
webdevium @webdevium ужысь
McLotos
@McLotos
Jul 14 2017 16:35
@VladShcherbin как-то так =(
Dmitriy Davletgareev
@fanblacksky_twitter
Jul 14 2017 16:35
@McLotos
var code = "formatted";
Ваня Devium
@webdevium
Jul 14 2017 16:36
@McLotos
напиши в новой строке три обратный кавычки
дальше код, отформатированный
в новой строке три обратных кавычки
webdevium @webdevium умничка!
McLotos
@McLotos
Jul 14 2017 16:37
@webdevium с 10й попытки и обезьяна бы смогла =)
@fanblacksky_twitter спасибо
KarmaBot
@KarmaBot
Jul 14 2017 16:37
@McLotos, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
McLotos
@McLotos
Jul 14 2017 16:42
При этом сам ACL у меня прописан как Middleware, если я правильно это сделал. - прописал его в app\Http\Kernel, а сам класс создал в app\Http\Middleware
Ваня Devium
@webdevium
Jul 14 2017 17:12
@McLotos иии?
@McLotos в регулярках пиши '[\d]+'
McLotos
@McLotos
Jul 14 2017 17:15
@webdevium в общем ни один из приведенных выше вариантов почему-то не работает так как нужно, в смысле я так и не смог уже после авторизации вызвать acl и только после него вызать роут, почему-то либо сразу срабатывает роут, либо вообще не срабатывает авторизация
Ваня Devium
@webdevium
Jul 14 2017 17:17
@McLotos
Route::group(['prefix' => 'v1', 'namespace' => 'API\v1', 'middleware' => ['auth', 'acl',]], function () {
    Route::get('application/{id}', 'Application@findOrFail');
})->where('id', '[\d]+');
@McLotos auth работает правильно?
@McLotos короче, тебе надо путь
auth => access control list => route ?
так?
McLotos
@McLotos
Jul 14 2017 17:21
@McLotos короче, тебе надо путь
auth => access control list => route ?
именно так
Ваня Devium
@webdevium
Jul 14 2017 17:21
@McLotos у тебя перед глазами решение. А вот тот факт, что у тебя походу криво работает acl - надо разобрать отдельно.
McLotos
@McLotos
Jul 14 2017 17:22
а почему prefix вызывается как параметр в group а не как метод route? в чем разница?
Ваня Devium
@webdevium
Jul 14 2017 17:22
@McLotos ни в чем, магия
@McLotos группа - это просто массив с кучкой параметров
McLotos
@McLotos
Jul 14 2017 17:25
т.е. в теории и вот такой вариант должен работать нормально
Route::prefix('v1')->group(['middleware' => ['auth', 'acl'],function() {
    Route::get('applications/{page}', 'API\v1\Application@getList');
    Route::get('application/{id}', 'API\v1\Application@findOrFail')->where('id', '[\d]+');
    Route::post('application/add', 'API\v1\Application@create');
    Route::patch('application/{id}', 'API\v1\Application@update')->where('id', '[\d]+');
    Route::delete('application/{id}', 'API\v1\Application@remove')->where('id', '[\d]+');
});
Ваня Devium
@webdevium
Jul 14 2017 17:26
@McLotos угу, только так никогда не пиши
McLotos
@McLotos
Jul 14 2017 17:26
@webdevium почему?
Ваня Devium
@webdevium
Jul 14 2017 17:26
@McLotos видишь applications и API\v1\ три тыщи раз повторяется?
вот их и надо выносить в параметры
McLotos
@McLotos
Jul 14 2017 17:27
как в твоем примере?
Ваня Devium
@webdevium
Jul 14 2017 17:27
как в моем примере
McLotos
@McLotos
Jul 14 2017 17:31
кажись понял. @webdevium спасибо. сейчас попробую переделать и протестирую. Может и правда проблема в ACL, я ее перенес с другого фрейма, может что не так сделал =)
prog-man
@prog-man
Jul 14 2017 18:00

Всем привет.

Есть коллекция items состоящая из моделей: Product, которые имеют связь Один-ко-многим PriceProduct. У модели PriceProduct есть атрибут price (число).
Т.е:

$items => [
    [
        'name' => 'Товар 1',
        .....
        'pricesProducts' => [        
            [
                'type_price' => 1,
                'price' => 100,
            ],
            [
                'type_price' => 2,
                'price' => 200,
            ],
            [
                'type_price' => 3,
                'price' => 150,
            ],
            [    
                'type_price' => 4,
                'price' => 90,
            ]
        ],
        ....
    ]    
    [    
        'name' => 'Товар 2',
        .....
        'pricesProducts' => [        
            [
                'type_price' => 1,
                'price' => 60,
            ],
            [
                'type_price' => 2,
                'price' => 250,
            ],
            [
                'type_price' => 3,
                'price' => 190,
            ],
            [    
                'type_price' => 4,
                'price' => 30,
            ]
        ],
    ]    
    ....
]

Как отсортировать коллекцию items по наименьшему значению артибута price из связи pricesProducts, т.е. исходя из вышеуказанного примера должно получиться так:

$items => [
    [    
        'name' => 'Товар 2',
        .....
        'pricesProducts' => [        
            [    
                'type_price' => 4,
                'price' => 30, // наименьшее значение цены
            ]
            ....
        ],
    ]    
    ....
    [
        'name' => 'Товар 1',
        .....
        'pricesProducts' => [        
            [    
                'type_price' => 4,
                'price' => 90, // наименьшее значение цены
            ]
        ],
        ....
    ]    

]
KarmaBot
@KarmaBot
Jul 14 2017 18:00
О! @prog-man! Сто лет не виделись!) Как жизнь молодецкая? Рассказывай :)
@prog-man, чтобы показать длинный листинг кода желательно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
Zlatoslav Desyatnikov
@zlodes
Jul 14 2017 18:06
@prog-man ну, как бы, есть $collection->sort(Closure).
prog-man
@prog-man
Jul 14 2017 18:08
@zlodes есть, но как мне с помощью него отсортировать по значению релайшена, причем отобрав наименьшее значение из price
т.е. из приведенного списка моделей выше, мне надо:
  1. Отобрать наименьшие значения у атрибута price связи ProductPrice, у каждой модели Product
  2. Отсортировать модели Product по атрибуту price полученный как результат в п.1
Zlatoslav Desyatnikov
@zlodes
Jul 14 2017 18:11
@prog-man,
$collection->sort(function(Product $product) {
    return $product->priceProduct->min(function(Price $price) {
        return $price->price;
    });
});
@prog-man если много записей, надо использовать eger loading, чтоб не было запросов много.
prog-man
@prog-man
Jul 14 2017 18:21
@zlodes спасибо. Правда пока что не получил сортировки - ошибок нет, но и сортировка почему то не случилась. Буду разбираться
KarmaBot
@KarmaBot
Jul 14 2017 18:21
Спасибо (+1) для @zlodes принято! Текущая карма +22.
Andrey
@daaner
Jul 14 2017 20:35
что выполняется раньше setAttribut или getAttribut?
или они вместе выполняются?
хочу затрейтить автосоздание алиаса, предварительно проверив на уникальность
Denis Luhmanov
@webbash
Jul 14 2017 21:02
Всем привет, кто-нибудь знает есть ли возможность в Laravel задать функцию для всех роутов ? Я хочу сделать темы для сайта, и хочу брать рандомное значение из модели каждый раз, на всех страницах
KarmaBot
@KarmaBot
Jul 14 2017 21:02
@webbash, привет, как настроение?
Arsen Soroka
@arsen-s
Jul 14 2017 21:19

@webbash

функцию для всех роутов

это как?

Denis Luhmanov
@webbash
Jul 14 2017 21:20
Ну то есть я хочу закинуть функцию во все роуты, чтобы эта функция срабатывала на каждой странице
Я думал это через layouts сделать во вьюхах, но мне кажется это неправильно
Arsen Soroka
@arsen-s
Jul 14 2017 21:21
возможно middleware тебе помогут
темы тянутся с разынх вьюшек?
Denis Luhmanov
@webbash
Jul 14 2017 21:23
Под темой я имею ввиду цвет ), передавать рандомный цвет из базы в вьюшку )
То есть по сути нужно просто передать переменную во вью
Но нужно сделать на всех вьюхах
Arsen Soroka
@arsen-s
Jul 14 2017 21:25
@webbash тогда composers юзай
https://laravel.com/docs/5.4/views#view-composers
JhaoDa
@jhaoda
Jul 14 2017 21:25
@webbash или прсто шаринг данных
Denis Luhmanov
@webbash
Jul 14 2017 21:29
@arsen-s Спасибо, я понял )
KarmaBot
@KarmaBot
Jul 14 2017 21:29
Спасибо (+1) для @arsen-s принято! Текущая карма +180.