These are chat archives for LaravelRUS/chat

11th
Nov 2016
Nuzsk
@Nuzsk
Nov 11 2016 07:23

большинство из них в будущем возможно будут запрещены в рашке

@enjame cms запрещены? за что?

Дмитрий Мязин
@d4c0
Nov 11 2016 07:45
как с помощью query builder сделать insert select? Кто-нибудь делал?
Kirill Nesmeyanov
@SerafimArts
Nov 11 2016 07:46
@d4c0 ты не поверишь... +)
Дмитрий Мязин
@d4c0
Nov 11 2016 07:49
@SerafimArts в массив, который я конфигурирую для вставки я могу записать например $insert[] = ['column' => DB::table('sometable')->select(...)->get()], ..., а потом ниже DB::table(sometable2)->insert($insert); ?
projct1
@projct1
Nov 11 2016 07:58
а есть в ларе какой-нибудь хук, что если поле пустое, то конвертилось в null? типа каста чтоль
чтобы для каждого поля не прописывать мутатор один и тот же...
DeadMoras
@DeadMoras
Nov 11 2016 07:59
Не знаю как написать, в общем, laravel проводит авторизацию(при условие true редирект - он проходит), но отказывается понимать, что юзер авторизовался :с (хер знает какой код кидать).
Может кто помочь?
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:00
@rorc задай тип поля в бд nullable и будет вписывать автоматом.
Anton Kartsev
@bigperson
Nov 11 2016 08:00
@greabock а где можно развернуто почитать про dsl? что то гуглится плохо. То есть лучше эту идею отбросить и прописывать все в классах политик?
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:01
@DeadMoras нипонятно. Опишите что вы хотите сделать?
DeadMoras
@DeadMoras
Nov 11 2016 08:02
@symbios-zi да обычная авторизация через метод attempt, В условие стоит редирект(если авторизовался) - он проходит, но Laravel не понимает, что юзер авторизовался(Auth::user() - пусто, токен (в бд) тоже пустой)
Я, правда, изменил модели(просто закинул в папку, чтобы не бросались в глаза), изменил в конфиге конечно, может еще где нужно изменить?
projct1
@projct1
Nov 11 2016 08:03
@symbios-zi не будет автоматом конвертится если пустую строку вставлять
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:03
@DeadMoras посмотри в папке config. Насколько помню там задается класс пользователя. Возможно там и отвалился
@rorc а ты не оставляй пустую строку
DeadMoras
@DeadMoras
Nov 11 2016 08:05
@symbios-zi все что я нашел - класс модели.
Я его изменил изначально, остальное вроде бы не касается auth
projct1
@projct1
Nov 11 2016 08:05
@symbios-zi есть поле select, где первый параметр (не выбрано), равен null, в html будет пустая строка
@symbios-zi один фиг придётся конвертить каждый раз в null...
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:07
@DeadMoras
DeadMoras
@DeadMoras
Nov 11 2016 08:07
@symbios-zi ?
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:07
config/auth.php там правильно задана модель user?
DeadMoras
@DeadMoras
Nov 11 2016 08:08
@symbios-zi да
@symbios-zi он ошибку бы возвращал(по идеи)
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:09
@DeadMoras прости. Идеи закончились. (((
А с сессиями нет проблем?
DeadMoras
@DeadMoras
Nov 11 2016 08:10
@symbios-zi да я могу и в ручную написать.(если проблему не решу)
@symbios-zi да тут дело даже не особо в них. токен в бд не записывается
DeadMoras
@DeadMoras
Nov 11 2016 08:16
Дык что, костыль писать?)
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:20
@DeadMoras лучше уж найти баг
DeadMoras
@DeadMoras
Nov 11 2016 08:21
@symbios-zi дык я понять не могу. Ошибок 0 , редирект проходит.
Дмитрий Мязин
@d4c0
Nov 11 2016 08:22

Ребята, помогите с INSERT SELECT, я пока только такое придумал:

$backpack = User::find(Auth::user()->id)->backpack;
$items_insert = [];

foreach($items as $key => $item) {
  $items_insert[] = [
    'backpack_id' => $backpack->id,
    'exterior_id' => DB::table('exterior_base')->where('market_hash_name', $item['market_hash_name'])->first()->id,
    'assetid' => $key,
    'classid' => $item['classid'],
    'instance_id' => $item['instanceid']
  ];
}

$qb = DB::table('items')->insert($items_insert);

Но это отдельный запрос на каждую итерацию...

Anton Vorontsov
@symbios-zi
Nov 11 2016 08:22
@DeadMoras трассируй по кусочкам. Найди место где пишется токен и попробуй понять что не так
DeadMoras
@DeadMoras
Nov 11 2016 08:23
@symbios-zi что там разделить то можно?) Там один метод, который возвращает true/false. false - Работает, true - Тоже(редирект). Но остальная система(я больше не изменял ничего - не работает)
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:25
@d4c0 насколько знаю insert сделает один запрос в твоем случае
Дмитрий Мязин
@d4c0
Nov 11 2016 08:27
@symbios-zi insert да, но ведь в цикле я делаю кучу запросов на select чтобы сформировать insert, а нужно объединить в один INSERT SELECT это дело, но я хз как
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:27
@d4c0 понял о чём ты
Дмитрий Мязин
@d4c0
Nov 11 2016 08:32
@symbios-zi можешь подсказать куда копать?
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:33
@d4c0 а что это за таблица такая? Pivot?
Дмитрий Мязин
@d4c0
Nov 11 2016 08:34
@symbios-zi нет, ни одна из 2-х таблиц не pivot. Обычные таблицы со связью many-to-one
@symbios-zi хм, а что если DB::table('exterior_base')->where('market_hash_name', $item['market_hash_name'])->first()->id, засунуть в функцию - замыкание? Получается она отработает только при выполнении insert, т.е. когда интерпретатор обратиться к этой ячейке массива. Ну в теории :)
Anton Vorontsov
@symbios-zi
Nov 11 2016 08:39
@d4c0 честно говоря ни делал ничего такого, у меня все на уровне eloquent. Кажется что архитектурные проблемы. Но мне так кажется
Дмитрий Мязин
@d4c0
Nov 11 2016 08:41
@symbios-zi а как на уровне eloquent провести множественную вставку, например?
Савелий
@Slava_Inkey_twitter
Nov 11 2016 08:46
Всем привет.
KarmaBot
@KarmaBot
Nov 11 2016 08:46
@Slava_Inkey_twitter, здравствуй.
Савелий
@Slava_Inkey_twitter
Nov 11 2016 08:47
Ребята подскажите, почему токен может не писаться в сессию? Проект рабочий, есть права на папки 777 storage. При отправке любой формы Токен Мисматч. При dd полючаю что токен в сессии = NULL
JhaoDa
@jhaoda
Nov 11 2016 08:56
@Slava_Inkey_twitter если токен null, то и сессия не стартанула
DeadMoras
@DeadMoras
Nov 11 2016 08:56
@jhaoda привет, можешь помочь, пожалуйста?
Kirill Nesmeyanov
@SerafimArts
Nov 11 2016 08:56
@Slava_Inkey_twitter можешь попробовать рестартануть сервак
JhaoDa
@jhaoda
Nov 11 2016 08:56
@Slava_Inkey_twitter так что вопрос превращается в «Ребята подскажите, почему сессия может не стартовать?»
Kirill Nesmeyanov
@SerafimArts
Nov 11 2016 08:57
у меня такой артефакт случался, но давно
а, да
ещё в конфигах сессии не правильно настроены бывает
например array используется
Савелий
@Slava_Inkey_twitter
Nov 11 2016 09:01
@SerafimArts так тут живой проект, который у всех норм разворачивается. Дал еще раз 777 всему, зашел с инкогнито подтянулось.
@SerafimArts спасибо
KarmaBot
@KarmaBot
Nov 11 2016 09:01
Спасибо (+1) для @SerafimArts принято! Текущая карма +624.
Савелий
@Slava_Inkey_twitter
Nov 11 2016 09:01
@jhaoda спасибо
KarmaBot
@KarmaBot
Nov 11 2016 09:01
Спасибо (+1) для @jhaoda принято! Текущая карма +1299.
seoperin
@seoperin
Nov 11 2016 09:23
привет
KarmaBot
@KarmaBot
Nov 11 2016 09:23
Не узнал тебя, @seoperin. Богатым будешь :)
seoperin
@seoperin
Nov 11 2016 09:23
есть такая задача, сделать в урле указание текущего города.
site.ru/msk
site.ru/spb
DeadMoras
@DeadMoras
Nov 11 2016 09:24
Ребят, так что, поможет кто с Auth? Мой велосипед оказался неприемлемым(нельзя использовать :с)
seoperin
@seoperin
Nov 11 2016 09:25
как такое делается? сделать группу роутов, сделать префикс, префикс - переменная? Как потом это всё использовать в именнованных урлах? везде надо будет передавать город одним из параметров?
Max Mova
@movetz
Nov 11 2016 09:58
@seoperin ты почти ответил на свой вопрос, да группу, на счет переменной, можно передавать в контроллер сразу или через сервис. В именнованных роутах подставляешь, можешь расширить с-тный класс и добавить метод для генерации именнованых роутов и в нем подставлять город доставая его из текущего роута
seoperin
@seoperin
Nov 11 2016 10:08
@movetz вот на словах вроде звучит понятно, но на деле не могу всё собрать в одно. Еще и накладывается многоязычность с урлами site.ru/ru/msk site.ru/en/spb
но многоязычность в итоге пакетом сделал
Max Mova
@movetz
Nov 11 2016 10:12
@seoperin давай уточним, как ты используешь название городов?
seoperin
@seoperin
Nov 11 2016 10:14
есть база, там название города и его slug. И организации которые привязаны к городам
мне нужно для каждого города показывать его организации
то есть город нужно передавать в контроллер (и во вьюхи возможно)
это упрощенная схема
еще есть админка, на которую не нужно распространять урлы городов (соответственно и в именнованные роуты не нужно забивать намертво города)
SEQUEL.ONE
@SequelONE
Nov 11 2016 10:18
Всем привет!)
KarmaBot
@KarmaBot
Nov 11 2016 10:18
@SequelONE даров!
SEQUEL.ONE
@SequelONE
Nov 11 2016 10:20
Подскажите можноли join использовать при insert или update? Нужно связать несколько таблиц и менять или добавлять в них данные по параметрам? Как это вообще осуществляется? К примеру при регистрации распределять роли юзерам и их права?
am0nshi
@am0nshi
Nov 11 2016 10:20
@SequelONE нет
SEQUEL.ONE
@SequelONE
Nov 11 2016 10:21
Значит в моделях нужно указывать связи? Правильно понимаю?
Max Mova
@movetz
Nov 11 2016 10:24
@seoperin тоесть для админки и для тех страниц одинаковые роуты?
am0nshi
@am0nshi
Nov 11 2016 10:25
@SequelONE я делаю ручками, а вообще, где в доке было, что можно запустить сохранение моделей каскадно
Mikhail Sychev
@snutworks
Nov 11 2016 10:34
Всем привет! Не пойму куда копать, у меня у пользователей есть связь на заведенные ими сущности, я хочу получить список всех пользователей дополнительно в выборке хочу получить количество этих связей, как это сделать? Что-то не могу найти
KarmaBot
@KarmaBot
Nov 11 2016 10:34
Привет, @snutworks! Проходи, присаживайся. В ногах правды нет :)
Mikhail Sychev
@snutworks
Nov 11 2016 10:40
@SequelONE да джоин то я могу написать, видимо после этого надо сделать что-то типо select("users.email", DB::raw()) и вот с raw у меня похоже проблемы
SEQUEL.ONE
@SequelONE
Nov 11 2016 10:42
@snutworks А по какому полю выборку то делать хотите? Я так понимаю id пользователя?
Mikhail Sychev
@snutworks
Nov 11 2016 10:43
@SequelONE у меня есть таблица users у меня есть таблица user_vehicles в ней user_id я хочу выбрать все мыла, имена и количество user_vehicles в поле например vehicles
SEQUEL.ONE
@SequelONE
Nov 11 2016 10:45
Пример не совсем такой, но суть думаю понятна
Arsen Soroka
@arsen-s
Nov 11 2016 10:46

@snutworks

хочу получить количество этих связей

->withCount(['name_relation1', 'relation2'])

https://laravel.com/docs/5.3/eloquent-relationships#counting-related-models

Mikhail Sychev
@snutworks
Nov 11 2016 10:51
@SequelONE спасибо
KarmaBot
@KarmaBot
Nov 11 2016 10:51
Спасибо (+1) для @SequelONE принято! Текущая карма +2.
Mikhail Sychev
@snutworks
Nov 11 2016 10:51
@arsen-s спасибо
KarmaBot
@KarmaBot
Nov 11 2016 10:51
Спасибо (+1) для @arsen-s принято! Текущая карма +124.
seoperin
@seoperin
Nov 11 2016 11:08
@movetz нет, роуты разные. я имею ввиду что на фронте есть /en/msk, ru/spb и еще есть админка /admin, в админке не надо передавать город, а на фронт надо. Если пропихнуть во фронт с префиксом для группы урлов, то надо будет в именованные роуты передавать город текущий. Получается что надо все ссылки на фронте делать с пропихиванием города. Если как то обойти это и пропихнуть насильно во все роуты переменную города, то пропихнется и в урлы админки, а нам этого не надо

сейчас сделал просто так

$city = \App\Models\City::find(1);
Route::group(['prefix' => $city->slug], function(){ 
.....

Это для одного города. Просто сейчас город один, но надо заложить возможность расширения

seoperin
@seoperin
Nov 11 2016 11:18
город можно отловить в контроллере - Request::segment(2) и по слагу найти город
но надо еще переключатель городов сделать
Max Mova
@movetz
Nov 11 2016 11:19

@seoperin

Если пропихнуть во фронт с префиксом для группы урлов, то надо будет в именованные роуты передавать город текущий.

Ну ок, сделай для этого какой-то хелпер:

class UrlHelper
{

  public static function withCityRoute($name, $parameters = [], $absolute = true)
  {
         $parameters['city'] = Route::current()->getParameter('city');
         return return app('url')->route($name, $parameters, $absolute);
  }
seoperin
@seoperin
Nov 11 2016 11:21
ага, подойдёт думаю
seoperin
@seoperin
Nov 11 2016 11:28
@movetz спасибо
KarmaBot
@KarmaBot
Nov 11 2016 11:28
Спасибо (+1) для @movetz принято! Текущая карма +9.
WebDevLix
@WebDevLix
Nov 11 2016 13:07
Всем привет, подкиньте пожалуйста хорошую cms магазина на laravel с панелью управления разумеется)
KarmaBot
@KarmaBot
Nov 11 2016 13:07
@WebDevLix даров!
Ivan
@Hunternnm
Nov 11 2016 13:13
@WebDevLix нормального готово нет ничего
Max Mova
@movetz
Nov 11 2016 13:13
@WebDevLix Magento
Ivan
@Hunternnm
Nov 11 2016 13:15
@movetz маджента на зенде написана, при чем тут лара?
Aimeos сырой до ужаса
Max Mova
@movetz
Nov 11 2016 13:18
@Hunternnm причем здесь зенд? я ему ответил что есть для лары и что из всех е-коммерс систем самая нормальная маджента
@WebDevLix тебе нужно поднимать с нуля или интегрировать в существующее решение?
Ivan
@Hunternnm
Nov 11 2016 13:20
@movetz подкиньте пожалуйста хорошую cms магазина на laravel с панелью управления разумеется - вот вопрос
WebDevLix
@WebDevLix
Nov 11 2016 13:20
Aimeos действительно сырой очень.
Ivan
@Hunternnm
Nov 11 2016 13:21
@movetz и да - маджента тяжелая чересчур. Проще взять опенкарт
WebDevLix
@WebDevLix
Nov 11 2016 13:25
Да тут вот какой вопрос, мне нужен магазин для интеграции с admitad - ом, есть кто у кого опыт работы с ним есть ?
Ksarien
@ksarien
Nov 11 2016 13:28
вспе привет. не нашел я что-то в eloquent’е альясы для полей? к примеру в таблице поле product_info, чтобы при обращении в модели к полю product возвращало значение стобца product_info?! есть выход через мутаторы, но если таких полей несколько?! для каждого писать мутатор, напряжно (
KarmaBot
@KarmaBot
Nov 11 2016 13:28
@ksar даров!
Ivan
@Hunternnm
Nov 11 2016 13:29
@ksar или мутатор, или select('product_info as product')
Ksarien
@ksarien
Nov 11 2016 13:30
и тот и тот вариант подразумевает написание кода для каждого такого поля ( эээххх если бы можно было бы protected $aliases = [] задал массив и работает )
Ivan
@Hunternnm
Nov 11 2016 13:34
@ksar эм, ты по итогу в массив конвертишь?
Там вроде было у класса свойство $maps(массив), где прописывалось 'product_info' => 'product'
Ksarien
@ksarien
Nov 11 2016 13:35
нет, но для toArray нашел вот тут https://laracasts.com/discuss/channels/eloquent/column-alias-definitions?page=1
решение
Ivan
@Hunternnm
Nov 11 2016 13:35
@ksar ну то что я и написал, по сути
Ksarien
@ksarien
Nov 11 2016 13:36
угу, но не то что мне нужно. видимо нету из коробки, придется обойтись мутаторами
WebDevLix
@WebDevLix
Nov 11 2016 13:46
Есть кто может помочь с апи адмитада ?
Evgeny
@tensor146
Nov 11 2016 13:52
Всем привет! Не особо разбираюсь во фреймворке, так что мой вопрос может показаться довольно глупым. Не существует ли некого бандла/php-либы для интеграции с внешними сервисами? В моём понимании, должен быть некий адаптер, в котором можно сделать как-то так: ExternalService('facebook')->setCredentials($credentials)->validate(), ExternalService('twitter')->setCredentials($credentials)->validate() и т.п. - т.е. вопрос про существование некой системы единообразного общения.
KarmaBot
@KarmaBot
Nov 11 2016 13:52
@tensor146, привет =)
Ваня Devium
@webdevium
Nov 11 2016 13:52
@tensor146 socialite
Evgeny
@tensor146
Nov 11 2016 13:53
Я пишу сервис для общения с целой кучей разнородных внешних сервисов и очень хочу вынести общую логику (например логин) в общее место, чтобы ту же проверку реквизитов по-разному не вызывать
ed-fruty
@ed-fruty
Nov 11 2016 13:53

@ksar

public function getAttribute($key)
{
      $key = isset($this->aliases[$key]) ? $this->aliases[$key] : $key;

      return parent::getAttribute($key);
}

После этого можно прописать алиасы

protected $aliases = [
    'super_filed' => 'product'
];
Evgeny
@tensor146
Nov 11 2016 13:55
@webdevium как я понял, он только для логина через соцсети?
JhaoDa
@jhaoda
Nov 11 2016 13:56
@tensor146 да, он для логина. Для отправки сообщений можно юзать уведомления
Evgeny
@tensor146
Nov 11 2016 13:59
@jhaoda ну для твиттера мне требуется сделать TwitterOfficialSDK->getConnector()->setCredentials($cred)->check(), а для вконтакте - VKOfficialSDK->validCredentials($login, $password, $token);
Т.е. мне писать гигантский свитч, внутри которого мапить данные и вызывать то или иное?
Даже звучит мерзко
JhaoDa
@jhaoda
Nov 11 2016 14:00
@tensor146 ты вообще открывал доку по Socialite? А по уведомлениям?
Evgeny
@tensor146
Nov 11 2016 14:01
@jhaoda нет, не открывал, т.к. увидел твоё сообщение, что он "для логина".
JhaoDa
@jhaoda
Nov 11 2016 14:01
@tensor146 и? Socialite для логина, уведомления для сообщений. Что не так?
Evgeny
@tensor146
Nov 11 2016 14:01
Мне нужно не только отправлять сообщения, но и делать целую кучу вещей. Но при этом часть из них - явно общие. Вот это "Общие" хотелось куда-то вынести.
Socialite - Он для логина через другие сервисы в мой сайт на ларавеле, так?
Мне нужно обратное, myLaravelSite->connect->randomOther->randomActions
Ivan
@Hunternnm
Nov 11 2016 14:17
@tensor146 тогда для каждого сервиса свой sdk
Нет такой универсальной серебряной пули для всего
Evgeny
@tensor146
Nov 11 2016 14:32
Жалко. Было бы круто.
WebDevLix
@WebDevLix
Nov 11 2016 14:51
@tensor146 тебе нужна библиотека для обращения к методам социальной сети ?
Для вк есть библиотека хорошая
JhaoDa
@jhaoda
Nov 11 2016 14:54
@WebDevLix ты вопрос бы прочитал внимательно
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 16:38
Всем привет! Джентельмены, позвольте узнать, как заставить работать правило валидатора required_without? нужно чтобы одно из двух значений обязательно присутствовало, но правило никак не хочет работать (ровно как и required_without_all)
KarmaBot
@KarmaBot
Nov 11 2016 16:38
Приветствую тебя, @KulakoffArtyom!
Anton Kartsev
@bigperson
Nov 11 2016 16:43

Товарищи подскажите. Отфильтровываю коллекцию заказов используя политики таким способом:

$orders = $orders->filter(function($order) {
            if (Gate::allows('order.view', $order)) {
                return $order;
            }
        });

Проблема в том, что поскольку политики хранятся в БД, я получаю ровно столько запросов к БД, сколько заказов у меня в коллекции. Как можно избавиться от этого?

KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 16:45
Можешь развернуто написать. Немного не понятен вопрос. Если политики в бд, почему бы при выборке и не отфильтровать по ним?
Anton Kartsev
@bigperson
Nov 11 2016 16:47
@KulakoffArtyom использую этот пакет https://github.com/thekordy/auzo#policies , Я не понимаю как можно по ним отфильтровывать при выборке.
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 16:48
Можешь привести пару примеров записей из бд? (самое необходимое - сами правила, id и т.д.)
Anton Kartsev
@bigperson
Nov 11 2016 16:49
http://prntscr.com/d60jhz @KulakoffArtyom
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 16:51
Могу позвонить на мобильный (если из России) или скайп. Что-то мне кажется ты не самый легкий путь для фильтрации нашел)
kulakovartyom - стучись в скайп
или скинь перезвонишку на +7(999)833-00-10
Anton Kartsev
@bigperson
Nov 11 2016 16:58
@KulakoffArtyom Проблема в том, чтоб определить есть доступ к заказу у пользователя или нет, надо сначала получить заказ и саму политику, а потом проверить. Либо создавать отдельно ability (дублирующие политики) которая просто возвращает есть доступ у пользователя к данной политики или нету (но это не удобно), и использовать скоупы при выборке заказов из базы.
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 16:58
Зачем все усложнять? у пользователя же какие-то права записаны?
создать для товаров поле (если на товар одно правило) или смежную таблицу (если несколько) и уже фильтровать взять у пользователя права и подставив их либо в where либо в join'ы условие дописывать
Я просто не понимаю в каком виде у тебя хранятся разрешения пользователя и в каком виде база с заказами
Anton Kartsev
@bigperson
Nov 11 2016 17:00
@KulakoffArtyom изменение роли пользователя http://prntscr.com/d60nza , изменение самих Abilities http://prntscr.com/d60oro
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 17:02
Опять же недостаток данных - у пользователя может быть одна роль или несколько? order.edit - я так понимаю разрешение на редактирование заказа
если пользователь либо может редактировать заказы, либо нет, то можно просто проверить при входе в раздел "заказы"
Dave
@aios
Nov 11 2016 17:03
@bigperson у тебя не SleepingOwl верно?
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 17:03
ладно, как вернешься набирай в скайпе.
@aios может случайно на мой вопрос ответ знаешь?)
Dave
@aios
Nov 11 2016 17:04
@KulakoffArtyom я не видел твой вопрос.
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 17:04
"Джентельмены, позвольте узнать, как заставить работать правило валидатора required_without? нужно чтобы одно из двух значений обязательно присутствовало, но правило никак не хочет работать (ровно как и required_without_all)"
Dave
@aios
Nov 11 2016 17:07
@KulakoffArtyom и че это они не работают?
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 17:07
Да вот мне тоже интересно
Dave
@aios
Nov 11 2016 17:07
@KulakoffArtyom я в общем то предметно спросил
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 17:08
Сейчас распишу :)
Dave
@aios
Nov 11 2016 17:08
в личку.
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 17:08
@aios ок
Спасибо, Dave
KarmaBot
@KarmaBot
Nov 11 2016 17:11
@KulakoffArtyom, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 17:12
Спасибо, @aios
KarmaBot
@KarmaBot
Nov 11 2016 17:12
Спасибо (+1) для @aios принято! Текущая карма +266.
Anton Kartsev
@bigperson
Nov 11 2016 17:22
@aios нет чистая ларавелька. @KulakoffArtyom у юзера роль одна, но у роли бесконечное количество правил. Примел правила. Пользователь может редактировать только свои заказы или только заказы относящиеся к его компании и городе Москва за сегодня со статусом новый.
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 17:23
опять же, не понимаю почему это все нельзя сделать на уровне выборки?
Dave
@aios
Nov 11 2016 17:24
@KulakoffArtyom потому что выборка это операция комплексная и более частая чем обновление и редактирование.
KulakoffArtyom
@KulakoffArtyom
Nov 11 2016 17:26

Так сделай вначале получения прав пользователя, потом уже от них формируй выборку, ибо Eloquent удобен этим.

$orders = new Order();
if ($user->hasPolicy('order.my')
$order->where('user_id', $user->id)

или типо того
опять же, может я тебя сейчас агитирую все через базу делать, а тебе категорически надо так, как ты написал - сформируй общий список требований
Игорь Мандыч
@chiz-developer
Nov 11 2016 20:13
Мужики, в ларавеле для специфических запросов к бд писать свой sql - говнокод?
am0nshi
@am0nshi
Nov 11 2016 20:14
насколько специфических?
Игорь Мандыч
@chiz-developer
Nov 11 2016 20:20
ну как бы объяснить, без фанатизма, ну бывает проще завернуть трехэтажный sql, чем морочиться с отношениями между моделями. К примеру:
у юзеров есть фамилия имя и год рождения. Нужно получить набор данных года рождения юзеров, фамилия которых начинается на М. Далее из таблицы спец.предложения, в которой хранятся записи предложений , одним из параметров которых есть год рождения, получить все записи, которые "..ON (1990, 1991,1975,1998)"
am0nshi
@am0nshi
Nov 11 2016 20:22
не вижу проблем
Игорь Мандыч
@chiz-developer
Nov 11 2016 20:22
сорри, пример только придумал...думаю бывают и круче ситуации....хочу узнать в общем мнение, это говнокод или нет?
NoViKoFF
@AndrewNovikof
Nov 11 2016 20:23
ОРМ покрывает 99℅ случаев
Игорь Мандыч
@chiz-developer
Nov 11 2016 20:23
К примеру обычные отношения между таблицами, типа пост - категория, это без обсуждения через отношения реализовывается
NoViKoFF
@AndrewNovikof
Nov 11 2016 20:23
Я бы даже сказал 99.9
Игорь Мандыч
@chiz-developer
Nov 11 2016 20:24
я с ларавелом начинаю разбираться только, раньше на Kohana работал. Так вот многие грешили на то, что ОРМ создает больше sql запросов к базе данных, этим создавая нагрузку на последнюю
am0nshi
@am0nshi
Nov 11 2016 20:25
ок, тогда вставлю свои 5 копеек. есть у меня 2 сущности, объединены через промежуточную таблицу где есть From, To, Date. обычный релейшен - понятно. но мне нужно строго сортировать выборку по Date. прикол в том, что сущности по хорошему не зависимые, просто у них есть таблица для whereHas, который сейчас чуток усложнился. есть идеи как накрутить на орме?
@chiz-developer это была кохана, выкинь из головы. я спецом мониторю запросы, пока что мне почти все нравится. у мускуля есть анализатор на уровне парсинга, он сам отфильтрует что не нужно
Игорь Мандыч
@chiz-developer
Nov 11 2016 20:27
та да, начиналось все не плохо с kohana, но как-то кинули нас....небось сами разработчики коханы забили и на ларавеле пишут или на yii)
@am0nshi как-то данных маловато
am0nshi
@am0nshi
Nov 11 2016 20:29
есть 2 сущности профайла, первый может добавить в избранные второго, и второй - первого. задача - построить историю "избранных", с учетом даты добавления
Игорь Мандыч
@chiz-developer
Nov 11 2016 20:39
ну вот, хороший случай замутить свой sql))
Anton Kartsev
@bigperson
Nov 11 2016 20:39
@KulakoffArtyom задача простая. Получить список заказов, только тех, к которым у пользователя есть доступ. У каждого пользователя свой уровень доступа к заказам, который зависит от политик. Вариант с if ($user->hasPolicy('order.my')) не подходит по причине того, что вторым параметром надо передавать экземпляр заказа к которому проверяется доступ. Я делал так как ты говоришь, добавляя дополнительные abilities которые всегда возвращают boolean значение, и в зависимости от этого подставлялся в запрос нужный скоуп, где прописывается логика, идентичная той, что прописана в политике. Но это плохая реализация, т.к. дублируется логика в политике и в скоупах. Как выход я получаю коллекцию целиком и отфильтровываю её проверяя через политики есть ли доступ к заказу (самый первый листинг), вариант рабочий и устраивает, но столкнулся с проблемой дублирования большого количества запросов в БД.
Игорь Мандыч
@chiz-developer
Nov 11 2016 20:39
@am0nshi, Sometimes you may need to use a raw expression in a query.
To create a raw expression, you may use the DB::raw method))
Игорь Мандыч
@chiz-developer
Nov 11 2016 20:45
@am0nshi у тебя вообще нет идей, как это реализовать или не знаешь как на орм сделать?
am0nshi
@am0nshi
Nov 11 2016 21:11
@chiz-developer у меня есть идеи, но они мне не нравятся
Игорь Мандыч
@chiz-developer
Nov 11 2016 21:35
@am0nshi если сортировку делать на php? массив сортировать?
am0nshi
@am0nshi
Nov 11 2016 21:36
@chiz-developer нет, там неограниченная по глубине пагинация
WebDevLix
@WebDevLix
Nov 11 2016 21:58
Всем привет, снова, такой вопрос, юзая орм пытаюсь выполнить запрос
                Offer::firstOrCreate(['offer_id' => $response[$i]->id, 'name' => $response[$i]->name,
                'price_ru' => $response[$i]->price_ru, 'deductions_ru' => $response[$i]->deductions_ru,
                'price_ua' => @$response[$i]->price_ua, 'deductions_ua' => @$response[$i]->deductions_ua,
                'price_by' => $response[$i]->price_by, 'deductions_by' => $response[$i]->deductions_by,
                'price_kz' => $response[$i]->price_kz, 'deductions_kz' => $response[$i]->deductions_kz,
                'img' => $response[$i]->img, 'cr' => $response[$i]->cr, 'epc' => $response[$i]->epc]);
KarmaBot
@KarmaBot
Nov 11 2016 21:59
Hello, @WebDevLix!
WebDevLix
@WebDevLix
Nov 11 2016 21:59
Как сделать так что бы выполнение запроса шло, даже если какая то из колонок переменной пуста
? :fire:
Arsen Soroka
@arsen-s
Nov 11 2016 22:27
@WebDevLix price_ru, price_ua - может есть смысл записывать одну цену и потом уже написать мутаторы для разных цен? а то добавится еще 3 валюты - офигеешь
Dave
@aios
Nov 11 2016 22:44
@WebDevLix @$response[$i]->price_ua порадовало.
ребят как сделать обновление форка на гитхабе после пулреквеста
ну такой я нуб вот не знаю как это сделать
zverbeta
@zverbeta
Nov 11 2016 22:53
Привет
KarmaBot
@KarmaBot
Nov 11 2016 22:53
Будь как дома, @zverbeta, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
zverbeta
@zverbeta
Nov 11 2016 22:54
Есть срочный вопрос по поводу преобразования типа из таблицы
Max Mova
@movetz
Nov 11 2016 22:54
@zverbeta прямо дежурим и ждем тебя :)
Dave
@aios
Nov 11 2016 22:54
@movetz ахахах))) +++
zverbeta
@zverbeta
Nov 11 2016 22:54
Меня попросили быть как дома
сам KarmaBot
Можете подсказать?
Max Mova
@movetz
Nov 11 2016 22:56
@zverbeta если ты задашь вопрос то может быть, а так ничего не получится
zverbeta
@zverbeta
Nov 11 2016 23:00
В общем. сейчас у меня есть проблема с тем, что все данные которые мне возвращает модель строкового типа, например boolean или число. В доке написано, что можно в модели определить $casts и запилить туда необходимые поля из базы и тип, в который они должны преобразовываться. Теперь проблема, это не работает со relation, как можно решить?
Dave
@aios
Nov 11 2016 23:01
указываешь касты в модели релейшена
как же ж просто.
да?
zverbeta
@zverbeta
Nov 11 2016 23:01
Да, только это не работает
Max Mova
@movetz
Nov 11 2016 23:02

@zverbeta

со relation

с relation? В модели релейшена касты и если нужно больше то через мутатор

Да, только это не работает
код в студию
Dave
@aios
Nov 11 2016 23:02
@movetz не по моему кто то не читал доку)
@movetz так что не дергайся)
zverbeta
@zverbeta
Nov 11 2016 23:03
И еще одна особенность, я работаю с reactjs, laravel выступает как api
Мутаторы срабатывают тогда, когда ты обращаешься к аттрибутам, тогда происходит конвертация
Max Mova
@movetz
Nov 11 2016 23:06
@zverbeta тогда Fractal тебе в помощь, помогает отделить твою энтити от респонса
zverbeta
@zverbeta
Nov 11 2016 23:06
public function index() 
{
return Data::with('relation')->get();
}
в relation модели
public function getPriceAttribute($value)
    {
        return floatval($value);
    }
Max Mova
@movetz
Nov 11 2016 23:08
@zverbeta ну у тебя проблема с нормализацией как я понял, то есть toArray возвращает не то что надо
zverbeta
@zverbeta
Nov 11 2016 23:10
Я может не до конца понимаю и нужны какие-либо сторонние библиотеки
Max Mova
@movetz
Nov 11 2016 23:10
@zverbeta что у тебя в protected $visible = [];
?
zverbeta
@zverbeta
Nov 11 2016 23:10
Ничего
Модель по сути пустая
Max Mova
@movetz
Nov 11 2016 23:11
/**
 * The attributes that should be visible in arrays.
 *
 * @var array
 */
protected $visible = [];
zverbeta
@zverbeta
Nov 11 2016 23:11
Не, т.е все данные из базы приходят, тут все нормально
Max Mova
@movetz
Nov 11 2016 23:11
@zverbeta ну они и будут приходит
но не будут преобразовываться в массив
zverbeta
@zverbeta
Nov 11 2016 23:15
Наверное тут больше проблема не в laravel, хотя я для себя кое-что понял
В общем, буду смотреть еще. Спасибо за быстрый ответ :)
Еще у giiter что-то со смайликами, с каких пор теперь ":)_" отображается как :)
Max Mova
@movetz
Nov 11 2016 23:18
@zverbeta смотри по коду как оно работает, xdebug в помощь и найдешь где и почему проблема, заодно и с нутрянкой фреймворка разберешься
Вообще уже который раз убеждаюсь, что Eloquent то еще зло (
zverbeta
@zverbeta
Nov 11 2016 23:21
Ну, это как со всеми этими модулями админки. Вроде и круто и классно, но получается больше проблем при обычной работе
Со всеми обертками так
Andrei Sosnov
@atehnix
Nov 11 2016 23:23
@movetz А причем тут Eloquent? Элоквент это про связи объектов, а не про апи и прочее.
Если нужно гибко настраивать ответы апишки - юзайте фрактал.
zverbeta
@zverbeta
Nov 11 2016 23:24
@atehnix Спасибо, буду смотреть
KarmaBot
@KarmaBot
Nov 11 2016 23:24
Спасибо (+1) для @atehnix принято! Текущая карма +165.
zverbeta
@zverbeta
Nov 11 2016 23:25
@movetz Спасибо!
Вот блин, только одно спасибо можно :(
Max Mova
@movetz
Nov 11 2016 23:32
@atehnix да я в целом - нарушаются solid принципы, практически полное отсутствие di, боль от cohesion.
а при разрастании проекта модели порой превращаются в перегруженные сборщики хлама, где и работа с базой, и критерии выборки, мутаторы, нормалайзеры да еще и бизнес логика.
Andrei Sosnov
@atehnix
Nov 11 2016 23:38
@movetz ну так это общая проблема всех Active Record ORM, так что с этим приходится мириться не потому что "Eloquent зло", а потому что AR не может иначе по определению)
Max Mova
@movetz
Nov 11 2016 23:56
@atehnix Ага, особенно подливает масло в огонь public scope методы. Мы решали эту проблему разбиением модели на два уровня - Application layer (Controller, Services, Handlers) => Domain layers (Entities, Repositories, Managers) => Data access layer (Eloquent model, Scopes) Ну и каждый разработчик понимал, что Eloquent модель это только абстракция над какой-то таблицей в базе данных, а не сущность. Все получалась довольно таки гибко и тестабильно, правда пришлось делать велосипеды, например Proxy для lazy loading в domain entities