These are chat archives for LaravelRUS/chat

4th
Dec 2015
Maxim
@Big-Shark
Dec 04 2015 03:20
laravel/framework#11114 ))))
Artur Gafurov
@assurrussa
Dec 04 2015 04:15
@Big-Shark Прикольно, спасибо)
Maxim
@Big-Shark
Dec 04 2015 04:16
карма
карма
KarmaBot
@KarmaBot
Dec 04 2015 04:17
@Big-Shark, Ваша карма +506. Вы благодарили 96 раз.
- Достижения: "Находчивый", "Любитель сладкого", "Благодетель", "Благодарный", "Нахлебник", "Рэмбо"
- Профиль Big-Shark на laravel.su
Artur Gafurov
@assurrussa
Dec 04 2015 04:18
@Big-Shark спасибо ))))
KarmaBot
@KarmaBot
Dec 04 2015 04:18

Благодарный

@assurrussa, вы выполнили условие: "Высказать 20 благодарностей.".
С чем и поздравляем =)
Благодарный
Спасибо (+1) для @Big-Shark принято! Текущая карма +507.
aleserche
@Aleserche
Dec 04 2015 06:32
кстати, вы используете homestead?
Anton Vorontsov
@symbios-zi
Dec 04 2015 06:40
@Aleserche я нет, Digital Ocean
всем утра
Anton Vorontsov
@symbios-zi
Dec 04 2015 06:49
/**
     * Returns json data for admin DataTables
     * @param $request
     * @param int $perPage
     * @return mixed
     */
    public function getTableData($request, $perPage = 10)
    {
        return
            $this->model
            ->with(['images', 'variants'])
            ->orderBy($request['sortBy'], $request['sortOrder'])
            ->paginate($perPage);
    }
как то можно добавить здесь where при условии что where есть в request?
если параметре $request['where'] пуст, то просто игнорировать
очень не хочется второй похожий метод писать
Ivan
@Hunternnm
Dec 04 2015 07:08
@Aleserche ovh ) +local ubuntu
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:12
минутка новостей: http://php.net/archive/2015.php#id2015-12-03-1
aleserche
@Aleserche
Dec 04 2015 07:13
Error Output: PHP Warning: require(/bootstrap/../vendor/autoload.php): failed to op en stream: No such file or directory in /vagrant/lara/quickstart/bootstrap/autoload.php on line 17
в чем может быть проблема?
вроде все верно настроил
Anton Vorontsov
@symbios-zi
Dec 04 2015 07:16
@SerafimArts боян
Роман Сохарев
@greabock
Dec 04 2015 07:16
@symbios-zi
public function getTableData($request, $perPage = 10)
{
    $query = $this->model->with(['images', 'variants']);

    if(isset($request['sortBy'], $request['sortOrder'])){
        $query->orderBy($request['sortBy'], $request['sortOrder']);
    }

    if(isset($request['whereFileld'],  $request['whereValue'])){
         $query->where($request['whereFileld'], $request['whereValue']);
    }

    return $query->paginate($perPage);
}
Anton Vorontsov
@symbios-zi
Dec 04 2015 07:18
@greabock о, т.е. можно всегда query дополнять?
@greabock спасибо
KarmaBot
@KarmaBot
Dec 04 2015 07:18
Спасибо (+1) для @greabock принято! Текущая карма +276.
Роман Сохарев
@greabock
Dec 04 2015 07:21
@symbios-zi ну это же fluent interface
Anton Vorontsov
@symbios-zi
Dec 04 2015 07:23
@greabock раньше не слышал о таком понятии. :(
Роман Сохарев
@greabock
Dec 04 2015 07:24
@symbios-zi ну вот, теперь слышал =)
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:24
@greabock эм
Роман Сохарев
@greabock
Dec 04 2015 07:25
@SerafimArts мэ )
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:25
orderBy, where и т.д. возвращают новый инстанс же
так что надо писать $query = $query->where(....)
и т.д.
NelinD
@NelinD
Dec 04 2015 07:26
@SerafimArts +
Роман Сохарев
@greabock
Dec 04 2015 07:26
хм...
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:29
@symbios-zi нифига
Роман Сохарев
@greabock
Dec 04 2015 07:29
эм... может я чего не понимаю, или мы разные исходники читали
https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Query/Builder.php#L1122
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:30
хм
NelinD
@NelinD
Dec 04 2015 07:30
@greabock Illuminate\Database\Eloquent\Builder
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:31
а всё равно там return $this
очень странно
точно помню всегда был новый инстанс
Artur Gafurov
@assurrussa
Dec 04 2015 07:31
@SerafimArts @greabock правильно написал)
У меня работает
NelinD
@NelinD
Dec 04 2015 07:33
@SerafimArts @greabock @assurrussa хм... и правда по грибку работает... хотя я таки помню как наступал на эти грабли...
Soprun Vladislav
@vlsoprun
Dec 04 2015 07:34
Всем привет
KarmaBot
@KarmaBot
Dec 04 2015 07:34
@vlsoprun, привет =)
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:34
@NelinD +1
я тоже
Maxim
@Big-Shark
Dec 04 2015 07:37
@SerafimArts наркован, небыло такого)))
Роман Сохарев
@greabock
Dec 04 2015 07:37
@SerafimArts наркован ))
NelinD
@NelinD
Dec 04 2015 07:37
@Big-Shark было
Maxim
@Big-Shark
Dec 04 2015 07:38
@greabock нарко ван, это такой автобус для хиппи)
Artur Gafurov
@assurrussa
Dec 04 2015 07:38
@Big-Shark :smile:
Роман Сохарев
@greabock
Dec 04 2015 07:38
@Big-Shark Нарко Ван Кеноби =)
Anton Vorontsov
@symbios-zi
Dec 04 2015 07:39
у меня тоже по методу Грибка работает
Роман Сохарев
@greabock
Dec 04 2015 07:40
KarmaBot
@KarmaBot
Dec 04 2015 07:40
@greabock, просьба оборачивать в код ссылки на видео, изображения и gist'ы (используя обратные апострофы)
NelinD
@NelinD
Dec 04 2015 07:42
зачем вести чейнджлоги
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:42
я думаю @jhaoda не обидится, надо оставить только для ютубов и гистов эти предупреждения
NelinD
@NelinD
Dec 04 2015 07:43
чтобы можно было отследить вот это порно с изменением типа возвращаемого значения
Роман Сохарев
@greabock
Dec 04 2015 07:44
@SerafimArts да хз, для картинок тоже норм
тут какое дело
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:45
я понял
Роман Сохарев
@greabock
Dec 04 2015 07:45
бывает захреначат на всё окно картинку
и это прям обламывает
Maxim
@Big-Shark
Dec 04 2015 07:53
@greabock @SerafimArts а еще как захерачат скриншот с кодом который не работает, а ты разбирайся
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:54
ну тогда размеры валидировать
Alex Ilyenko
@assada
Dec 04 2015 07:55
@SerafimArts да ну. Это сообщение не стоит тех ресурсов которые оно будет занимать.
Maxim
@Big-Shark
Dec 04 2015 07:56
@SerafimArts можно сделать вайтлист)
JhaoDa
@jhaoda
Dec 04 2015 07:56
@SerafimArts и если размер выходят за рамки допустимого, то банить
:)
Alex Ilyenko
@assada
Dec 04 2015 07:56
@jhaoda просто кидать ссылку на meatspin
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:56
@Big-Shark т.е. те участники, кому можно добавлять?
JhaoDa
@jhaoda
Dec 04 2015 07:57
@Assada дэр шутка
Maxim
@Big-Shark
Dec 04 2015 07:57
@SerafimArts угу, почему бы и нет)
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:57
@Big-Shark это уже расизм
Alex Ilyenko
@assada
Dec 04 2015 07:57
@SerafimArts просто белый список анархистов
Maxim
@Big-Shark
Dec 04 2015 07:57
@SerafimArts ну какой же это расизм, это привелегия) Можно по карме смотреть допустим)
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 07:57
@Big-Shark не тру
не люблю особые привилегии =)
JhaoDa
@jhaoda
Dec 04 2015 07:59
Да, людей надо ненавидеть не за что-то, а просто так :)
Maxim
@Big-Shark
Dec 04 2015 07:59
@SerafimArts почему? Оно будет работать и работать адекватно, а то что внутри есть хук с привелегиями, это не важно)
@SerafimArts делаем просто, 100 кармы есть, бот молчит, нет кармы, бот ругается, а может даже и банит)
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 08:00
@Big-Shark ты хочешь ещё один хабр?
с кармадрочесттвом
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:01
карма
KarmaBot
@KarmaBot
Dec 04 2015 08:01
@Ellrion, Ваша карма +85. Вы благодарили 16 раз.
- Достижения: "Находчивый", "Любитель сладкого"
- Профиль Ellrion на laravel.su
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:01
my precious!
@SerafimArts вот так?)
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 08:02
+
Maxim
@Big-Shark
Dec 04 2015 08:02
@SerafimArts ты думаешь многие полезут смотреть на алгорит? не думаю, а так мы никому не скажем, что там за алгоритм будет)
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 08:02
ну хз
JhaoDa
@jhaoda
Dec 04 2015 08:03
@Big-Shark пс, парень, ты это в паблике обсуждаешь
Maxim
@Big-Shark
Dec 04 2015 08:03
@SerafimArts еще вариант сделать вайтлист из всех кто в сообшестве ларавелрус с есть на гитхабе, там человек 15
@jhaoda пффф, ты видел чтоб тут кто-то историю читал, тут за 1 день 5 раз один и тотже вопрос задают) Все сейчас прочитают, и сразу забудут)
JhaoDa
@jhaoda
Dec 04 2015 08:04
@Big-Shark и сие вельми печально
Роман Сохарев
@greabock
Dec 04 2015 08:07
не, привилегии - плохая идея
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 08:08
лучше сделать покупку
Maxim
@Big-Shark
Dec 04 2015 08:08
+1
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 08:08
за N кармы покупать апгрейды на акк
это и интересно и можно будет всунуть эти "привелегии"
только что делать с читаками вроде шарка...
:D
Maxim
@Big-Shark
Dec 04 2015 08:09
@SerafimArts обнулить карму, и забанить
Ivan
@Hunternnm
Dec 04 2015 08:12
сделать -1000
привет)
l
@Equilibumq
Dec 04 2015 08:14
Помогите найти сервис для отправки смс по номеру.
Желательно: хороший сервис + понятная апи документация.
На цену пофиг
JhaoDa
@jhaoda
Dec 04 2015 08:15
@Equilibum а можно отправлять смс не по номеру?
Alex Ilyenko
@assada
Dec 04 2015 08:16
@Equilibum любой гейт. Там апи аж нифига нет
JhaoDa
@jhaoda
Dec 04 2015 08:17
@Equilibum сервис — http://smsc.ru/, библиотека — https://github.com/jhaoda/SMSCenter
l
@Equilibumq
Dec 04 2015 08:17
@jhaoda Отличное замечание, сразу чуствуется высокий контраст сарказма и юмора
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 08:17
@Equilibum :D
l
@Equilibumq
Dec 04 2015 08:17
@jhaoda спасибо
KarmaBot
@KarmaBot
Dec 04 2015 08:17
Спасибо (+1) для @jhaoda принято! Текущая карма +469.
JhaoDa
@jhaoda
Dec 04 2015 08:17
@Equilibum при желании могу обеспечить пониженный тариф
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:17
торговец смсками
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:21
@Equilibum вот такая либа еще есть https://github.com/SimpleSoftwareIO/simple-sms. Русские драйверы к ней тут https://github.com/SmartCrowd/simple-sms-drivers и вот пара https://gist.github.com/alexivenkov/53753023e2baa204d712
l
@Equilibumq
Dec 04 2015 08:21
@Ellrion спасибо, то что надо
KarmaBot
@KarmaBot
Dec 04 2015 08:21
Спасибо (+1) для @Ellrion принято! Текущая карма +86.
JhaoDa
@jhaoda
Dec 04 2015 08:22
Вот только эти либы умеют отправлять исключительно смс. Никаких HLR, пингов и прочего
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:23
@jhaoda все верно. но чаще всего только это и нужно
zerik1990
@zerik1990
Dec 04 2015 08:25
всем привет! как увеличить время авторизации пользователя. ато выкидывает иногда через полчаса, не понимаю по какому принципу. через ajax делаешь и ответ такой:
KarmaBot
@KarmaBot
Dec 04 2015 08:25
@zerik1990, привет, как настроение?
zerik1990
@zerik1990
Dec 04 2015 08:25
Failed to load resource: the server responded with a status of 401 (Unauthorized)
@KarmaBot круто, пятница сегодня
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:26
у нее один минус, она жестко привязана к газл 6. и чуваки там так себе ее пилят. Я им помогал но там работы еще много. Мб кто из сообщества подключится? Апи само у либы нормальное, идея сделать внешне похоже на ларовский Mail::.
Ivan
@Hunternnm
Dec 04 2015 08:30
Вопрос к знатокам: есть ли вред от чрезмерного использования статичных функций? В привычку вошло всё, что паблик, делать статичными... Удобно, но правильно ли? Вернее несколько неправильно?
Maxim
@Big-Shark
Dec 04 2015 08:34
@Hunternnm сильно неправильно.
Richcho54
@Richcho54
Dec 04 2015 08:35
Посоветуйте капчу для аутентификации?
Maxim
@Big-Shark
Dec 04 2015 08:35
@Richcho54 recapcha
Richcho54
@Richcho54
Dec 04 2015 08:35
@Big-Shark а как она работает, я просто примеров не видел
@Big-Shark там какой то кругляш нарисован
Richcho54
@Richcho54
Dec 04 2015 08:36
@Big-Shark все равно не понимаю как оно работает
Maxim
@Big-Shark
Dec 04 2015 08:37
@Richcho54 смотрит куки, и прочее, если все норм и ты на человека похож, то просто галочка, если нет, то капча с вводом номера дома, или текста из книги
Ivan
@Hunternnm
Dec 04 2015 08:38
@Big-Shark а почему?... Или что прочитать?
Richcho54
@Richcho54
Dec 04 2015 08:38
@Big-Shark recapcha заполнять не надо что ли? просто вставлять на сайт? Как то необычно выглядит?
Maxim
@Big-Shark
Dec 04 2015 08:38
@Richcho54 нормально выглядит, есть даже либа для пхп для нее
@Hunternnm прочитай про синглтон
Ivan
@Hunternnm
Dec 04 2015 08:39
@Big-Shark читал, даже пользуюсь этим паттерном в двух проектах... по идее надо перечитать
Richcho54
@Richcho54
Dec 04 2015 08:42
@Big-Shark а еще есть варианты, нашел https://github.com/mewebstudio/captcha и https://github.com/anhskohbo/no-captcha - которая и есть recapcha. просто я так и не пойму на сайте рекапчи по ссылке что ты написал мне сразу выводит что я не робот, что не привычно.
@Big-Shark спасибо
KarmaBot
@KarmaBot
Dec 04 2015 08:43
Спасибо (+1) для @Big-Shark принято! Текущая карма +508.
Maxim
@Big-Shark
Dec 04 2015 08:43
@Richcho54 непривычно, зато нормально, самый адекватный вариант
Ivan
@Hunternnm
Dec 04 2015 08:43
@Big-Shark +1
Richcho54
@Richcho54
Dec 04 2015 08:43
@Big-Shark ок буду пробовать его
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:49
@greabock @SerafimArts обнаружил что с where так не прокатывает. Приходится переопределять переменную $query
        $query = $this->model;

        if(!empty($withModels)) {
            $query = $query->with($withModels);
        }
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:51
@symbios-zi не может быть
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:52
@Ellrion ну попробуй сам
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:52
@symbios-zi смотря что ты дальше делаешь
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:52

@Ellrion

       if(!empty($withModels)) {
            $query->with($withModels);
        }

так не работает

Artur Gafurov
@assurrussa
Dec 04 2015 08:53
@symbios-zi
        if(!empty($withModels)) {
            $query = $this->model->with($withModels);
        }
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:53
@Ellrion я написал DataTables и хочу реализовать метод удобный для получения и фильтрации данных. Потом все это в трейт заверну. with могут быть разные, вот и хочу строить цепочку в зависимсоти от заданных параметров
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:53
ты просто не понимаешь что $query = $this->model; это пока не query a model
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:54

@Ellrion

    public function getTableData($request, $perPage = 10, $withModels = [])
    {
        $query = $this->model->with($withModels);

        if(isset($request['sortBy'], $request['sortOrder'])) {
            $query->orderBy($request['sortBy'], $request['sortOrder']);
        }

        if(isset($request['whereField'],  $request['whereValue']) && strlen($request['whereValue']) > 0) {
            $query->where($request['whereField'], 'like' ,'%'.$request['whereValue'].'%');
        }

        return $query->paginate($perPage);
    }

ну пришлось сделать так. пустой массив отдавать

если не задан
@assurrussa помоему это уже излишне
думал можно кратко query
Artur Gafurov
@assurrussa
Dec 04 2015 08:56
@symbios-zi нет там модель до этого была просто))
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:56
ну да, теперь я понял. А можно как то из нее сформировать запрос?
jongleb
@jongleb
Dec 04 2015 08:56
return $this->model
            ->where('is_moderated', 0)
            ->with(array(
                'source',
               'company',

                'tags' => function ($q) {
                    $q->with(array('tags' => function ($q) {
                        $q->with('closure');
                    }));
                }
            ))
            ->first();
Вот так завертел я да
Soprun Vladislav
@vlsoprun
Dec 04 2015 08:56
Парни, подскажите как установить php7?
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:56
@vlsoprun apt-get install?
Soprun Vladislav
@vlsoprun
Dec 04 2015 08:57
@symbios-zi apt-get install php7 ?
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:57
@jongleb муть какая то нечитаемая
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:57
@jongleb
 $query = $this->model->newQuery();
Maxim
@Big-Shark
Dec 04 2015 08:57
@vlsoprun ты уверен что тебе это надо?
@vlsoprun php7.0 вот так точней)
Soprun Vladislav
@vlsoprun
Dec 04 2015 08:57
@Big-Shark думаю да )
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:57
@Ellrion видимо ты мне хотел написать )
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 08:58
@symbios-zi да сорь
Anton Vorontsov
@symbios-zi
Dec 04 2015 08:58
@Ellrion попробую щас
Maxim
@Big-Shark
Dec 04 2015 08:58
@vlsoprun мемкеша еще нет, редиса тоже, точней все есть, но собирать надо ручками, потом менять конфиги у нджинкса или апатча, так как фпм поменялся, ну и еще куча гемора, но если тебе очень надо, то да аптгет пхп7, только надо репозиторий добавить
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 09:00
@symbios-zi тогда присваивание не нужно. Это самая большая боль у активрекорд вообще и у элоквента в особенности. Непонимание с чем ты сейчас работаешь (а вариантов куча, класс модели, инстанс модели, элоквент билдер, квеир билдер, коллекция ). И наличие магии и одинаковых методов у всего этого
Maxim
@Big-Shark
Dec 04 2015 09:01
@Ellrion не у всех АР есть такой головняк)
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 09:01
@Big-Shark у всех есть но не у всех ТАКОЙ)
Maxim
@Big-Shark
Dec 04 2015 09:02
@Ellrion у пропела класс модели и класс билдер это разные классы, и методов одинаковых соответственно нет
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:02

@Ellrion

    public function getTableData($request, $perPage = 10, $withModels = [])
    {
        $query = $this->model->newQuery();

        if(!empty($withModels)) {
            $query->with($withModels);
        }

        if(isset($request['sortBy'], $request['sortOrder'])) {
            $query->orderBy($request['sortBy'], $request['sortOrder']);
        }

        if(isset($request['whereField'],  $request['whereValue']) && strlen($request['whereValue']) > 0) {
            $query->where($request['whereField'], 'like' ,'%'.$request['whereValue'].'%');
        }

        return $query->paginate($perPage);
    }

/////////////////////
    public function getTableData($request, $perPage = 10, $withModels = [])
    {
        $query = $this->model->with($withModels);

        if(isset($request['sortBy'], $request['sortOrder'])) {
            $query->orderBy($request['sortBy'], $request['sortOrder']);
        }

        if(isset($request['whereField'],  $request['whereValue']) && strlen($request['whereValue']) > 0) {
            $query->where($request['whereField'], 'like' ,'%'.$request['whereValue'].'%');
        }

        return $query->paginate($perPage);
    }

как вы итоге правильнее оформить? два варианта

$query = $this->model->newQuery(); думается академичнее
Maxim
@Big-Shark
Dec 04 2015 09:04
@symbios-zi первый вариант, но вообше код не очень удобныц
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:04
но второй способ короче
@Big-Shark объясни
Maxim
@Big-Shark
Dec 04 2015 09:04
@symbios-zi смотри, первый параметр массив, верно? а что если заменить его на класс?
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:05
@Big-Shark на какой класс? о_О
request в отдельный класс вынести?
Maxim
@Big-Shark
Dec 04 2015 09:05
@symbios-zi
 if($request->hasSort()) {
            $query->orderBy($request->getSortField(), $request->getSortOrder());
        }
@symbios-zi делаешь класс который принимает массив, и в нем уже делаешь все проверки, и прочее
jongleb
@jongleb
Dec 04 2015 09:06
@Ellrion а что это даст?
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:06
@Big-Shark понял о чем ты, боюсь что это необоснованное усложнение. Такой метод я хочу использовать для каталога, где будут фильтры
Maxim
@Big-Shark
Dec 04 2015 09:06
@symbios-zi в итоге, ты не должен помнить ключи при использовании в модели, вся логика проверки убрана в другой класс, можно задать дефолтные значения, и тд
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:07
@Big-Shark вот теперь я лучше стал понимать еще тот твой код, который ты мне месяц назад кидал. На эту же тему
Soprun Vladislav
@vlsoprun
Dec 04 2015 09:07
@Big-Shark ну проще говоря, нужно чуть чуть подождать :laughing:
Maxim
@Big-Shark
Dec 04 2015 09:07
@symbios-zi у меня точно такойже метод, только больше, и в него сейчас приходит такой класс, а тот класс уже принимает на вход массив
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 09:07
@jongleb там ниже разобрались что я не тебе отвечал а промахнулся
Maxim
@Big-Shark
Dec 04 2015 09:07
@vlsoprun угу
@symbios-zi я тот класс немного переписал, но не сильно, смысл остался, пока это самый удобный вариань из того что я смог придумать, и видел в уже готовых проектах
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:08
@Big-Shark это у тебя универсальный билдер?
т.е. по идее можно сделать его гибким и везде по коду использовать, верно? в различных самых выборках
Maxim
@Big-Shark
Dec 04 2015 09:09
@symbios-zi почему универсальный? У меня 1 форма поиска с фильтрами на сайте, и он для нее
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:09
@Big-Shark а, ну вот в этом случае я также сделаю. Сейчас пока для админки решил простым путем пойти. Правда самому не нравится такой длинный метод
Maxim
@Big-Shark
Dec 04 2015 09:10
@symbios-zi точней так, у меня 2 одинаковые формы, но на разных страницах, и на обоих используется это фильтр, и одинаковая функция фильтрации, а вот сам вывод уже разный
Роман Сохарев
@greabock
Dec 04 2015 09:11
Maxim
@Big-Shark
Dec 04 2015 09:12
@symbios-zi ты можешь делать допусти ProductSearchFilter, ReviewSearchFilter и тд, и всем имплементировать интерфейс, и повторяюшиеся методы добавлять через трейты, в таком случае ты не потеряешь в использовании, так как точно знаешь что приходит, и какими параметрами обладает, и нет дублирования кода, и логики
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:12
@Big-Shark согласен, спасибо за консультацию
@Big-Shark спасибо
KarmaBot
@KarmaBot
Dec 04 2015 09:12
Спасибо (+1) для @Big-Shark принято! Текущая карма +509.
Maxim
@Big-Shark
Dec 04 2015 09:12
@greabock примеры очень красивые, но код гавно)
junk1114
@junk1114
Dec 04 2015 09:13
Ребят, можете помочь тут? Вопрос по laravel, запутался чего-то
https://toster.ru/q/272105
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:13
@greabock да ты пробовал? как только дело до кастомизации дойдет, ты с ума сойдешь. Никакой гибкости
и получается лапша гавнокода
тоже с них начал, понял что написать свой проще
@junk1114 используй жадную загрузку http://laravel.com/docs/5.1/eloquent-relationships#eager-loading
@junk1114 там в доках и описывается этот случай N + 1 query problem
Maxim
@Big-Shark
Dec 04 2015 09:15
@symbios-zi жадную
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:16
@Big-Shark уже исправил
Maxim
@Big-Shark
Dec 04 2015 09:16
@symbios-zi Исправился)
Anton Vorontsov
@symbios-zi
Dec 04 2015 09:16
^_^
junk1114
@junk1114
Dec 04 2015 09:27

@symbios-zi не пойму, вот мой запрос на получение постов:

        $data['posts'] = Post::orderBy('fixed')->orderBy('rating', 'desc')
                        ->with('comments', 'user.role')
                        ->get();

В моем случае нужны Ограничения жадной загрузки? Как их туда впихнуть то?)

Artur Gafurov
@assurrussa
Dec 04 2015 09:28
@junk1114 with('comments' => function() {})
Maxim
@Big-Shark
Dec 04 2015 09:28
@junk1114
Post::orderBy('fixed')->orderBy('rating', 'desc')
                        ->with(['comments', 'user.role' =>function($query){
                              return $query->where(...);
                        }])
                        ->get();
junk1114
@junk1114
Dec 04 2015 09:35

@Big-Shark и как же вот это:

$post->savedUsers->contains(Auth::id())

Там использовать?

@Big-Shark мне нужно, что бы в цикле вывода постов, было $post->saved = true или false
sitdirek
@sitdirek
Dec 04 2015 09:40
Добрый день.
Как можно в ORM добавить подзапрос вида:
... WHERE (SELECT COUNT(*) FROM table INNER JOIN ... ON ... ) = 0 ...
KarmaBot
@KarmaBot
Dec 04 2015 09:40
@sitdirek, привет, как настроение?
Artur Gafurov
@assurrussa
Dec 04 2015 09:41
@sitdirek where(DB::raw('......'))
Maxim
@Big-Shark
Dec 04 2015 09:42
@junk1114 whereHas наверное
jongleb
@jongleb
Dec 04 2015 09:42

ребзи в чем ошибка?

 public function notModerated()
    {
        return $this->model
            ->where('is_moderated', 0)
            ->with(array(
                'source' => function ($q) {
                    $q->with('news');
                },
                'tags' => function ($q) {
                    $q->with(array('tags' => function ($q) {
                        $q->with('closure');
                    }));
                }
            ))
            ->first();
    }

А именно после

 'source' => function ($q) {
                    $q->with('news');
                },

Где

public function news()
    {
        return $this->hasMany('App\News', 'source_id', 'id');
    }

Трейс:

ErrorException in HasMany.php line 43:
Argument 2 passed to Illuminate\Database\Eloquent\Relations\HasMany::match() must be an instance of Illuminate\Database\Eloquent\Collection, instance of App\CustomCollection\SupportsCollection given, called in E:\servers\OpenServer\domains\data-hub-api-admin\vendor\laravel\framework\src\Illuminate\Database\Elo
Artur Gafurov
@assurrussa
Dec 04 2015 09:42
@sitdirek ДОКА
Andrey
@Insidexa
Dec 04 2015 09:43
какой репозиторий для php7
а то у меня собранная с сорцов рц
sitdirek
@sitdirek
Dec 04 2015 09:46
@assurrussa спасибо
KarmaBot
@KarmaBot
Dec 04 2015 09:46
Спасибо (+1) для @assurrussa принято! Текущая карма +19.
Роман Сохарев
@greabock
Dec 04 2015 09:46
@jonglebApp\CustomCollection\SupportsCollection не расширяет Illuminate\Database\Eloquent\Collection, очевидно же
Andy Melentev
@Sinersis
Dec 04 2015 09:46
@greabock спасибо за консоль, по тестам позже напишу-)
KarmaBot
@KarmaBot
Dec 04 2015 09:46
Спасибо (+1) для @greabock принято! Текущая карма +277.
Andy Melentev
@Sinersis
Dec 04 2015 09:47
Всем приветы рацари клавиатур
KarmaBot
@KarmaBot
Dec 04 2015 09:47
@Sinersis, и тебе привет ;)
Andrey
@Insidexa
Dec 04 2015 09:47
бот
Maxim
@Big-Shark
Dec 04 2015 09:48
@Insidexa Не боткай тут )
Andrey
@Insidexa
Dec 04 2015 09:48
мне бы репу на php7
Andy Melentev
@Sinersis
Dec 04 2015 09:49
@Insidexa на сам пых или Хоместеад для 7 пыха?
jongleb
@jongleb
Dec 04 2015 09:50
@greabock А как мне тогда взять новости принадлежащие компании по которой выбраи новость?
Andrey
@Insidexa
Dec 04 2015 09:50
на пых
Роман Сохарев
@greabock
Dec 04 2015 09:50
@Sinersis привет, я уж думал ты совсем потерялся )
junk1114
@junk1114
Dec 04 2015 09:50
Не получается ничего=(
Andy Melentev
@Sinersis
Dec 04 2015 09:51
@Insidexa скинул вот ссыль как установить http://losst.ru/ustanovka-php-7-v-ubuntu
Andrey
@Insidexa
Dec 04 2015 09:51
спасибо @Sinersis
KarmaBot
@KarmaBot
Dec 04 2015 09:51

Находчивый

@Sinersis, вы выполнили условие: "Набрать 10 кармы.".
С чем и поздравляем =)
Находчивый
Спасибо (+1) для @Sinersis принято! Текущая карма +10.
Andy Melentev
@Sinersis
Dec 04 2015 09:51
@greabock Да блин у меня тут дедлайн на голове-)
jongleb
@jongleb
Dec 04 2015 09:51
то есть тут грубо гвооря выбирается новость -> по ней компания и я предполгал что сразу и по этой компании можно взять и какие еще она новости имеет
Andy Melentev
@Sinersis
Dec 04 2015 09:52
Так если кому нид помощь со Sphinx обращайтесь-) Я себя чувствую доктором уже в нем-)
Кстате фассетку на нем делать одно удовольствие
Maxim
@Big-Shark
Dec 04 2015 09:53
@Sinersis не надо стаивть из исходников, уже репы есть
Роман Сохарев
@greabock
Dec 04 2015 09:53
@jongleb расширять коллекцию от Eloquent'овской?
Maxim
@Big-Shark
Dec 04 2015 09:53
Вченра линк кидал сюда
Andy Melentev
@Sinersis
Dec 04 2015 09:53
@Big-Shark ну я че нашел то и дал парню-) Пусть учиться гуглить-)
jongleb
@jongleb
Dec 04 2015 09:53
@greabock А почему тогда в этой части сработало
'tags' => function ($q) {
                    $q->with(array('tags' => function ($q) {
                        $q->with('closure');
                    }));
                }
Роман Сохарев
@greabock
Dec 04 2015 09:54
понятия не имею )
jongleb
@jongleb
Dec 04 2015 09:54
'source' => function ($q) {
                    $q->with('news');
                }
А тут нет
Andy Melentev
@Sinersis
Dec 04 2015 10:01
Кстате ктонить ченить слышал LAravel 5.2 будет или нет?
SergeyMiracle
@SergeyMiracle
Dec 04 2015 10:01
Просто хочу всех поздравить с выходом PHP 7
Andy Melentev
@Sinersis
Dec 04 2015 10:02
@SergeyMiracle Да да да
sitdirek
@sitdirek
Dec 04 2015 10:02

@assurrussa вопрос вдогонку.

where(DB::raw('......'))

Данный where к моему подзапросу добавляет IS NULL, как можно его убрать?

Artur Gafurov
@assurrussa
Dec 04 2015 10:04
@sitdirek не понятно куда добавляет, кому?)
sitdirek
@sitdirek
Dec 04 2015 10:06

Это в ORM:

->where(DB::raw('
                    (
                        (SELECT COUNT(*) FROM districts
                            INNER JOIN client_district ON districts.id = client_district.district_id
                                WHERE client_district.client_id = clients.id
                        ) = 0
                    )'
                ))

На выходе SQL:

WHERE (
       (SELECT COUNT(*) FROM districts
                 INNER JOIN client_district ON districts.id = client_district.district_id
                             WHERE client_district.client_id = clients.id
       ) = 0
) IS NULL
Maxim
@Big-Shark
Dec 04 2015 10:10
@Sinersis Будет и 5.2 и 5.3
Andy Melentev
@Sinersis
Dec 04 2015 10:11
@Big-Shark хых чего ждать боюсь подумать-)
Artur Gafurov
@assurrussa
Dec 04 2015 10:11
@sitdirek потому что ты не туда 0 поставил, ну я так думаю)
sitdirek
@sitdirek
Dec 04 2015 10:13
@assurrussa туда)
мне именно нужен такой SQL код, только без IS NULL
Andy Melentev
@Sinersis
Dec 04 2015 10:14
@sitdirek убери IS_NULL если он тебе ненужен и вообще че у тебя в коде делает DB:raw?
@sitdirek Модели и коллекции не неслышал?
sitdirek
@sitdirek
Dec 04 2015 10:15

@Sinersis

Добрый день.
Как можно в ORM добавить подзапрос вида:

... WHERE (SELECT COUNT(*) FROM table INNER JOIN ... ON ... ) = 0 ...
KarmaBot
@KarmaBot
Dec 04 2015 10:15
@sitdirek, привет, как настроение?
sitdirek
@sitdirek
Dec 04 2015 10:15
@sitdirek where(DB::raw('......'))
Alex Ilyenko
@assada
Dec 04 2015 10:16
@sitdirek так у тебя where(DB::raw('......'))
а второй параметр для where где?
Andy Melentev
@Sinersis
Dec 04 2015 10:16
@sitdirek подзапросы...
sitdirek
@sitdirek
Dec 04 2015 10:19
@Assada в том и дело, что он мне не нужен.
@Sinersis а что не так?
Andy Melentev
@Sinersis
Dec 04 2015 10:20
@sitdirek ну вообще есть такая волшебная штука у лары как Eloquent почему ее не пользуешь?
symbios-zi @symbios-zi мне одному кажется что все торопятся с php7?
Anton Vorontsov
@symbios-zi
Dec 04 2015 10:20
еще нет никакой инфраструктуры для php7
sitdirek
@sitdirek
Dec 04 2015 10:21
@Sinersis использую, но я не знаю как часть sql кода написать на нем. У меня очень сложный запрос.
Maxim
@Big-Shark
Dec 04 2015 10:22
@symbios-zi как так нет?
Andy Melentev
@Sinersis
Dec 04 2015 10:22
@sitdirek да там любой сложности запрос можно выполнить не напрягаясь
@sitdirek иди кофе попей выкури ченить, подумай посмотри на все под другим углом и вуаля
Anton Vorontsov
@symbios-zi
Dec 04 2015 10:22
@Big-Shark ну а как же кеши, fpm?
sitdirek
@sitdirek
Dec 04 2015 10:23
@Sinersis успел уже три сна увидеть пока решаю эту задачу)
Maxim
@Big-Shark
Dec 04 2015 10:23
@symbios-zi fpm есть, кеши только ручками собирать пока)
Anton Vorontsov
@symbios-zi
Dec 04 2015 10:23
@Big-Shark ну и жесть это. Я вообще считаю что нельзя вообще из сырцов что либо собирать
Andy Melentev
@Sinersis
Dec 04 2015 10:23
@sitdirek я 3 месяца разбирал фасетную фильтрацию и теперь делаю ее за 20 минут-) Так что ничего страшного
Anton Vorontsov
@symbios-zi
Dec 04 2015 10:24
на продакшене как минимум
Maxim
@Big-Shark
Dec 04 2015 10:24
@symbios-zi но я локально написал уже класс который прикидывается мемкешем, но сохраняет все в файлы)
sitdirek
@sitdirek
Dec 04 2015 10:24
@Sinersis тогда попробую более детально объяснить задачу, может подтолкнешь к правильной мысли.
Maxim
@Big-Shark
Dec 04 2015 10:25
@symbios-zi сдругой стороны посмотри, есть ли смысл в мемкеше или редисе локально для большинства сайтов, я думаю нет) поэтому можно без проблем все поставить и потестить)
Anton Vorontsov
@symbios-zi
Dec 04 2015 10:27
@Big-Shark ну и готов ли ты прямо сегодня на продакшене ставить php7?
Maxim
@Big-Shark
Dec 04 2015 10:27
@symbios-zi мы будем делать это на следуюшей недели)
@symbios-zi ам нужна скорость)))
Anton Vorontsov
@symbios-zi
Dec 04 2015 10:27
@Big-Shark расскажешь как это было )
@Big-Shark если будет весело, опиши в блоге
Maxim
@Big-Shark
Dec 04 2015 10:27
@symbios-zi тут нельзя материться)
sitdirek
@sitdirek
Dec 04 2015 10:28
@Sinersis
Есть 3 таблицы:
'clients', 'districts', 'client_district'.
В `client_district' пара ключей клиента и района, если клиент указал район. Надо получить список клиентов, которые указали конкретный район (district_id) или вообще не указали его (то есть их нет в таблице client_district).
Maxim
@Big-Shark
Dec 04 2015 10:28
@sitdirek и все? И это сложный запрос?
Andy Melentev
@Sinersis
Dec 04 2015 10:29
@sitdirek пфффф не смеши читай доки и учи мат часть по связям в таблиц в sql
sitdirek
@sitdirek
Dec 04 2015 10:30
@Sinersis вот сам запрос в sql
select * from clients where ((select count(*) from districts inner join client_district on districts.id = client_district.district_id where client_district.client_id = clients.id) = 0 OR (select count(*) from districts inner join client_district on districts.id = client_district.district_id where client_district.client_id = clients.id AND client_district.district_id = 2) >= 1 ) order by updated_at desc limit 100
Maxim
@Big-Shark
Dec 04 2015 10:31
@sitdirek whereHas смотри, она примерное такие выборки и делает
NelinD
@NelinD
Dec 04 2015 10:31
@Sinersis хочешь напрягу запросом?)))
Andy Melentev
@Sinersis
Dec 04 2015 10:31
@NelinD Я сам кого хочешь щас напрягу запросами-) Давай напряги
NelinD
@NelinD
Dec 04 2015 10:32
This message was deleted
Maxim
@Big-Shark
Dec 04 2015 10:32
@sitdirek ты уверен что твой запрос написал самым верным способом, почему не использовать обычный джоин?
sitdirek
@sitdirek
Dec 04 2015 10:32
@Big-Shark не уверен)
Maxim
@Big-Shark
Dec 04 2015 10:33
@sitdirek делаем лефт джоин, потом 2 веа, через ор, первое на нулл, второе на ид
Andy Melentev
@Sinersis
Dec 04 2015 10:33
sql_query = select * , products.title as products_title,products.slug as products_slug,products.preview as products_preview, \
    producers.available as producers_available,producers.logo as producers_logo,producers.title as producers_title from autoshina.parameters\
    join autoshina.products on parameters.product_id = products.id \
    join autoshina.producers on parameters.producer_id = producers.id

    sql_field_string = products_title
    sql_field_string = producers_title
    sql_field_string = products_slug
    sql_field_string = producers_logo
    sql_attr_uint    = product_id
    sql_attr_uint    = producer_id
    sql_attr_uint    = coast
    sql_attr_bool    = producers_available
    sql_attr_json    = attr
    sql_attr_json    = products_preview
Вот такие запросы меня напрягают-)
Maxim
@Big-Shark
Dec 04 2015 10:33
@Sinersis что это за бойда, и что в ней такого?
NelinD
@NelinD
Dec 04 2015 10:34

@Sinersis

$query->whereHas('relation1', function ($query) {
    $query->has('relation2');
});

relation1 юзает softDelete как убрать у

 function ($query) {
    $query->has('relation2');
}

условие deleated_at is null?

@Sinersis только не надо теории, проверь вначале сам
Andy Melentev
@Sinersis
Dec 04 2015 10:34
@Big-Shark это фасетная фильтрация товаров в магазине в чистом виде прямо из сфинкса
JhaoDa
@jhaoda
Dec 04 2015 10:36
Сегодня день SQL в чате
NelinD
@NelinD
Dec 04 2015 10:37
@jhaoda подключайся
junk1114
@junk1114
Dec 04 2015 10:37
Поправил свой вопрос. Может не так задал:
https://toster.ru/q/272105
Andy Melentev
@Sinersis
Dec 04 2015 10:37
@NelinD Я пока немогу ничего тебе сказать, чуть позже помозгую дома -)
jongleb
@jongleb
Dec 04 2015 10:44

и все же я не совсем понимаю в чем проблема то

return $this->hasMany('App\News', 'source_id','id');

Как и написано в доках Моделька внешний и локал а оно ругается

Maxim
@Big-Shark
Dec 04 2015 10:55
@sitdirek http://sandbox.propelorm.org/6f20986 это хоть и не элоквоент, но запрос насколько я понимаю генерируется верный, посмотри
sitdirek
@sitdirek
Dec 04 2015 10:59
@Big-Shark да, верный. Спасибо.
KarmaBot
@KarmaBot
Dec 04 2015 10:59
Спасибо (+1) для @Big-Shark принято! Текущая карма +510.
jongleb
@jongleb
Dec 04 2015 11:03
С чем может быть свзяан двойной ескейп кавычек в
  protected $casts = [
        'communication_channels_json' => 'array',
веренее наоборот двойное экрарирование
а не эскепй
То есть на выходе я получаю
"communication_channels_json" => ""{\"facebook\":\"dsfsdggfdgdsfgsdfgfds\",\"twitter\":\"fsdfdfsdfdfds\",\"email\":\"sdfksdjf@mail.ru\",\"linked_in\":\"fdfsfdfsdfdfsdf\",\"reddit\":\"\",\"bitcointalk\":\"\"}""
например
хотя должен вообще без кавычек
bamper
@bamper
Dec 04 2015 11:15
Только начал изучать Lvl, создал пустой модель class Person extends Eloquent {} в контроллере $folks = Person::all(); выводит всех людей с таблицы 'people' Подскажите, пожалуйста, как/где происходит связывание People model/person table
bamper
@bamper
Dec 04 2015 11:20
@SerafimArts по документации Flight/flights все ясно, как и Task/tasks в туториале, не понятно Person/people
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 11:23
там же написано, переменная protected $table
KarmaBot
@KarmaBot
Dec 04 2015 11:24
@bamper, в этом чате принято добавлять имя пользователя, что бы его поблагодарить.
Andy Melentev
@Sinersis
Dec 04 2015 11:25
@SerafimArts хой
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 11:25
@Sinersis челюсть долой (с) +)
D3-FC
@D3-FC
Dec 04 2015 11:44
This message was deleted
KarmaBot
@KarmaBot
Dec 04 2015 11:44
@D3-FC, и тебе привет ;)
D3-FC
@D3-FC
Dec 04 2015 11:44
Привет всем. Есть вопрос по грамматике :) Может ли у одной сущности быть 2 родителя?
KarmaBot
@KarmaBot
Dec 04 2015 11:45
@D3-FC, здравствуй.
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 11:47
@D3-FC только в виде костыльного решения с делегированием методов сквозь рефлексию (ReflectionMethod::toClosure, Closure::bindTo)
но лучше не иметь себе мозг и использовать traits
jongleb
@jongleb
Dec 04 2015 11:51
Внешний ключ обязательно должен начинаться с названия сущности?
иначе почем
return $this->hasMany('App\News', 'source_id','id');
не принимается
а кидает
Argument 2 passed to Illuminate\Database\Eloquent\Relations\HasMany::match() must be an instance of Illuminate\Database\Eloquent\Collection, instance of App\CustomCollection\SupportsCollection given, called in
konfuji
@konfuji
Dec 04 2015 11:54
Доброго времени! Подскажите, пожалуйста, как в Laravel 4.2 сделать Redirect::back() с дефолтным URL?
Maxim
@Big-Shark
Dec 04 2015 11:58
@konfuji что такое дефолтный урл?
NelinD
@NelinD
Dec 04 2015 12:08
@Big-Shark прям с языка снял
konfuji
@konfuji
Dec 04 2015 12:09
@Big-Shark URL, на который будет перенаправлен пользователь не посещавщий до этого другие страницы сайта (мудрёно то как =)).
Maxim
@Big-Shark
Dec 04 2015 12:10
@konfuji эта функция должна использоваться только когда есть референс, а тебе я думаю нужно чтото жругое
konfuji
@konfuji
Dec 04 2015 12:20
Ага, т.е. если реферрер пустой, то Redirect::to('/')? Спасибо)
KarmaBot
@KarmaBot
Dec 04 2015 12:20
@konfuji, в этом чате принято добавлять имя пользователя, что бы его поблагодарить.
Ivan
@Hunternnm
Dec 04 2015 12:40
Нубский вопрос: а как правильнее данные из формы брать - через Input или Request?
Artur Gafurov
@assurrussa
Dec 04 2015 12:40
@Hunternnm лучше через Request)
JhaoDa
@jhaoda
Dec 04 2015 12:41
@Hunternnm лучше form request юзать
D3-FC
@D3-FC
Dec 04 2015 12:41
@SerafimArts Спасибо за ответ. Если можешь по поводу трейт. Подскажи как это реализовать или подкинь доку. Что-то не нашёл в здешнем мануале
KarmaBot
@KarmaBot
Dec 04 2015 12:41
Спасибо (+1) для @SerafimArts принято! Текущая карма +155.
JhaoDa
@jhaoda
Dec 04 2015 12:41
@D3-FC трейты это механизм РНР, а не ларавель
Maksim (Ellrion) Platonov
@Ellrion
Dec 04 2015 12:41
Так то инпут один фиг смотрит в реквест
JhaoDa
@jhaoda
Dec 04 2015 12:41
@D3-FC так что бегом читать доку РНР
Ivan
@Hunternnm
Dec 04 2015 12:42
@assurrussa @jhaoda спасибо
KarmaBot
@KarmaBot
Dec 04 2015 12:42
Спасибо (+1) для @assurrussa принято! Текущая карма +20.
Спасибо (+1) для @jhaoda принято! Текущая карма +470.
D3-FC
@D3-FC
Dec 04 2015 12:44
@jhaoda @SerafimArts спасибо. понял
KarmaBot
@KarmaBot
Dec 04 2015 12:44
Спасибо (+1) для @jhaoda принято! Текущая карма +471.
Спасибо (+1) для @SerafimArts принято! Текущая карма +156.
Ivan
@Hunternnm
Dec 04 2015 12:46
Хм, мне надо "провалидировать" и вставить в 4 таблицы...
firstbit12
@firstbit12
Dec 04 2015 12:48
Всем привет!
KarmaBot
@KarmaBot
Dec 04 2015 12:48
@firstbit12, здравствуй.
firstbit12
@firstbit12
Dec 04 2015 12:53
У меня вопрос. На сайте планируется делать апи для мобильного приложения. Как организовать структуру папок/файлов внутри проекта. Кто-то предлагал апи вынести в отдельный проект. Я новичек, прошу сильно не ругать? Есть мысль для контроллеров апи просто добавить суффикс, например, если обычный контроллер называется OrgController, то для апи назвать OrgApiController?
JhaoDa
@jhaoda
Dec 04 2015 12:59
@firstbit12 что мешает вынести их в отдельную папку внутри Http?
firstbit12
@firstbit12
Dec 04 2015 13:04
например app/Http/Controllers/Api/OrgController? А не возникнет ли какая-либо коллизия с пространством имен?
@jhaoda в этом случае?
JhaoDa
@jhaoda
Dec 04 2015 13:06
@firstbit12 какая коллизия тут может возникнуть?
D3-FC
@D3-FC
Dec 04 2015 13:06

@jhaoda @SerafimArts Возможно вопрос немного неправильно задал. Но кажется вы посоветовали не совсем то что спрашивал. Конечно могу ошибаться. Заранее Уточню что являюсь начинающим самоучкой. Во всё пытаюсь вникнуть постепенно. Потому вопрос может показаться глупым. Поэтому прошу помощи.

суть вопроса.

Есть табличка blanks
и две таблички client и seller

Можно ли организовать родственную связь так, чтобы blank принадлежал (belongsTo) табличкам user и seller

то есть чтобы у модели Blank было 2 метода

public function client()
    {

        return $this->belongsTo('Client');
    }

public function seller()
    {

        return $this->belongsTo('Seller');
    }

P.S. знаю что здесь скорее должно belongsToMany. Это всего лишь пример чтобы понять суть вопроса. Поэту пусть остаётся BelongsTo

И так вопрос. Можно ли у одной модели сделать 2 метода belongsTo?

emissar
@emissar
Dec 04 2015 13:07
всем привет
KarmaBot
@KarmaBot
Dec 04 2015 13:07
@emissar, и тебе привет ;)
emissar
@emissar
Dec 04 2015 13:07
ребят, подскажите, есть пакет для http авторизации обычной под люмен?
projct1
@projct1
Dec 04 2015 13:08
как сетить данные во вьюху?
код следующий:
        $view = view();

        switch ($this->slug) {
            case 'cart':
                $view->setPath('page.cart');
                $page = $this->createPage('Корзина');
                break;
            case 'o-nas':
                $view->setPath('page.o-nas');
                $page = $this->createPage('О нас');
                break;
            case 'catalog':
                $view->setPath('list-of-items');
                $view->with('listOfItemsType', 'category');
                $view->with('listOfItems', $this->getRootCategoryList());
                break;
            case 'new':
                $template = 'list-of-items';
                $data['listOfItems'] = Product::getNew();
                break;
            case 'hit':
                $view->setPath('list-of-items');
                $view->with('listOfItems', Product::getHit());
                break;
            case '':
                $view->setPath('page.index');
                $view->with('categoryLeftMenu', $this->getRootCategoryList());
                $view->with('productNewList', Product::getNew());
                $view->with('productHitList', Product::getHit());
                break;
            default:
                break;
        }
выдаёт ошибку Call to undefined method Illuminate\View\Factory::setPath()
konfuji
@konfuji
Dec 04 2015 13:09
@Big-Shark спасибо #медленнофикс
KarmaBot
@KarmaBot
Dec 04 2015 13:09
Спасибо (+1) для @Big-Shark принято! Текущая карма +511.
projct1
@projct1
Dec 04 2015 13:09
хотя IDE всё подсвечивает нужные методы
konfuji
@konfuji
Dec 04 2015 13:09
@D3-FC Да, можно.
firstbit12
@firstbit12
Dec 04 2015 13:10
@jhaoda например в роутинге:
Route::group(['prefix' => 'api'], function()
{
Route::resource('organization', 'OrganizationController', ['only' => ['index']]);
});
D3-FC
@D3-FC
Dec 04 2015 13:10
@konfuji То есть на уровне базы данных такие связи допускаются и никаких проблем не возникнет?
JhaoDa
@jhaoda
Dec 04 2015 13:10
@firstbit12 в роутинге ты какое пространство напишешь, то и будет
firstbit12
@firstbit12
Dec 04 2015 13:11
Как указать какой именно использовать контроллер: app/Http/Controllers/OrgController или app/Http/Controllers/Api/OrgController
?
D3-FC
@D3-FC
Dec 04 2015 13:11
@konfuji Где-то краем уха когда-то слышал что так может только оракловская. а в mysql и постгресс так нельзя
@konfuji или глупости говорю?
Andrey Degtyaruk
@hlogeon
Dec 04 2015 13:12
@D3-FC
Как? Какую проблему ты в этом видешь?
В таблице не может быть поля client_id и seller_id одновременно? С чего бы?
konfuji
@konfuji
Dec 04 2015 13:13
@D3-FC конечно допускаются.
D3-FC
@D3-FC
Dec 04 2015 13:13
@hlogeon @konfuji Понятно спасибо большое!
KarmaBot
@KarmaBot
Dec 04 2015 13:13
Спасибо (+1) для @hlogeon принято! Текущая карма +3.
Спасибо (+1) для @konfuji принято! Текущая карма +1.
D3-FC
@D3-FC
Dec 04 2015 13:14
Кто-то ввёл в своё время в заблуждение что так делать нельзя но не объяснили почему
Оказывается что можно...
вобщем ещё раз спасибо!
KarmaBot
@KarmaBot
Dec 04 2015 13:14
@D3-FC, в этом чате принято добавлять имя пользователя, что бы его поблагодарить.
firstbit12
@firstbit12
Dec 04 2015 13:16
Route::group(['prefix' => 'api', 'namespace'=>'Api'], function()
{
Route::resource('organization', 'OrganizationController', ['only' => ['index']]);
});
@jhaoda Так будет правильно?
konfuji
@konfuji
Dec 04 2015 13:17
@D3-FC бывает, а вообще там всё достаточно просто: http://informatic.ugatu.ac.ru/lib/office/Proekt.htm . Пожалуйста)
firstbit12
@firstbit12
Dec 04 2015 13:26
@jhaoda Проверил - работает. А по поводу использования laravel пакетов? Хотелось бы услышать коментарий.
D3-FC
@D3-FC
Dec 04 2015 13:31
@konfuji Спасибо. Полезная дока
KarmaBot
@KarmaBot
Dec 04 2015 13:31
Спасибо (+1) для @konfuji принято! Текущая карма +2.
Ruslan
@AsanovRuslan
Dec 04 2015 13:37
Всем привет. Хелпните кто знает,
KarmaBot
@KarmaBot
Dec 04 2015 13:37
@AsanovRuslan, привет =)
JhaoDa
@jhaoda
Dec 04 2015 13:46
@firstbit12 каких пакетов?
Andrey Degtyaruk
@hlogeon
Dec 04 2015 13:48
С ручками, небось
kozlikov
@kozlikov
Dec 04 2015 14:13
Всем привет!
KarmaBot
@KarmaBot
Dec 04 2015 14:13
@kozlikov, привет, как настроение?
Maxim
@Big-Shark
Dec 04 2015 14:14
@rorc омг, что это за ерунда?
ShekoMaxim
@ShekoMaxim
Dec 04 2015 14:17
Всем привет,может кто помочь?как получить объект типа Builder который будет содержать запрос с несколькими join-ми?
KarmaBot
@KarmaBot
Dec 04 2015 14:17
@ShekoMaxim, и тебе привет ;)
Maxim
@Big-Shark
Dec 04 2015 14:17
@ShekoMaxim ну и сделай несколько джоинов, в чем проблемма?
select * from a left join b on a.id = b.a_id left join c on b.id = c.b_id
KarmaBot
@KarmaBot
Dec 04 2015 14:18
DB::table('a')->leftJoin('b', 'a.id', '=', 'b.a_id')->leftJoin('c', 'b.id', '=', 'c.b_id')->get()
ShekoMaxim
@ShekoMaxim
Dec 04 2015 14:20
@KarmaBot возвращает не объект типа Builder
Maxim
@Big-Shark
Dec 04 2015 14:20
@ShekoMaxim DB::table('a')->leftJoin('b', 'a.id', '=', 'b.a_id')->leftJoin('c', 'b.id', '=', 'c.b_id') а так?
ShekoMaxim
@ShekoMaxim
Dec 04 2015 14:23
@Big-Shark а вот так вроде возвращает,сейчас проверю точно
Andrey Degtyaruk
@hlogeon
Dec 04 2015 14:26
@ShekoMaxim
Поговорил с ботом - день удался)
ShekoMaxim
@ShekoMaxim
Dec 04 2015 14:28
@hlogeon Пополнил его карму :)
ShekoMaxim
@ShekoMaxim
Dec 04 2015 14:38
@Big-Shark а можно вопросик?Я использую пакет datagridview,для работы с таблицой формируется объект типа Builder вот так User::query(),чем такой способ отличается от DB::table('users')->get(); ?
projct1
@projct1
Dec 04 2015 14:39
@Big-Shark как сетить во вьюшку названия шаблонов?
Maxim
@Big-Shark
Dec 04 2015 14:41
@rorc каких шаблонов, ты о чем, тот код что ты скинул выше, напопинает мне начало работы с код игнайтером
@ShekoMaxim ничем
Andrey Degtyaruk
@hlogeon
Dec 04 2015 14:42
@Big-Shark
Бл*, мне недавно подбросили проект на CodeIgniter на аудит.... Вот я офигел
projct1
@projct1
Dec 04 2015 14:42
@Big-Shark в зависисости от страницы во вьюшку должны попадать определённые параметры, характерные для конкретных страниц и сам шаблон меняется
Maxim
@Big-Shark
Dec 04 2015 14:43
@rorc и? у тебя будут нескоко акшенов которые будут передавать параметры во вьюшку, в вьюшка уже буедт устанавливать нужный лайаут
@hlogeon бывает
projct1
@projct1
Dec 04 2015 14:45
@Big-Shark у меня щас так: всё обрабатываю в джобе чтобы каждый раз не создавать экшены:
class PageController extends BaseController
{
    public function show($slug = '')
    {
        return $this->dispatch(new PageJob($slug));
    }
}
This message was deleted
This message was deleted
Andrey Degtyaruk
@hlogeon
Dec 04 2015 14:49
@rorc
Чувк, я конечно, не знаю специфики твоего проекта, но что-то мне подсказывает, что ты джобы не по назначению пользуешь... И у тебя вообще что-то везде оче странное происходит.
Eugene Holiday
@eugene-holiday
Dec 04 2015 14:49
Чтобы не создавать экшены создаём кейзы ))
projct1
@projct1
Dec 04 2015 14:50
@hlogeon в плане странное?
@hlogeon в твоём понимании для чего джобы нужны?
Andrey Degtyaruk
@hlogeon
Dec 04 2015 14:50
@eugene-holiday
Не кейзы, а целый класс Job, в котором делаем кейзы
Maxim
@Big-Shark
Dec 04 2015 14:50
@rorc омг, у тебя на каждую страницу должен быть свой екшен, и джобы тут вообше не нужны
Eugene Holiday
@eugene-holiday
Dec 04 2015 14:51
@rorc на чём писал до ларавеля ? :shipit:
Andrey Degtyaruk
@hlogeon
Dec 04 2015 14:51
@rorc
Минимальная сфера применения Job-а - ИНКАПСУЛЯЦИЯ ПОВТОРЯЮЩЕЙСЯ БИЗНЕС ЛОГИКИ
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 14:51

БОЛЬШЕ КАПСА БОГУ КАПСА!

Andrey Degtyaruk
@hlogeon
Dec 04 2015 14:52
Нахер тебе Job, который ты никогда, кроме этого места использовать не будешь, м? Да и где там у тебя бизнес-логика?
@SerafimArts
не, харош, я удовлетворил свою потребность
projct1
@projct1
Dec 04 2015 14:52
@hlogeon ну тогда обработку страниц где делать, сервисы создавать? если всё в контроллерах делать, они жирные будут
@eugene-holiday ни на чём)
@Big-Shark страницы создаются в базе в админке, но бывают и кастомные страницы
Maxim
@Big-Shark
Dec 04 2015 15:06
@rorc и? ты же их в кейсе указываешь, почему нельзя их указать в роуте и развести на разные акшены?
projct1
@projct1
Dec 04 2015 15:08
@Big-Shark просто у меня есть общие инициализации и переменные, и мне получается надо будет их постоянно с разных экшенов вызывать, а так всё в одном классе Jobe , в одном месте всё разруливается
Maxim
@Big-Shark
Dec 04 2015 15:09
@rorc это не верно
Роман Сохарев
@greabock
Dec 04 2015 15:09

как сетить данные во вьюху?
код следующий: ...

я хочу развидеть этот код )

Andrey Degtyaruk
@hlogeon
Dec 04 2015 15:13

@rorc

просто у меня есть общие инициализации и переменные

для этого тебе дали ViewComposer

Maxim
@Big-Shark
Dec 04 2015 15:14
@greabock я тоже, но он так и стоит перед глазами
projct1
@projct1
Dec 04 2015 15:14
@greabock @Big-Shark ))
of elfk.
удалить?
Andrey Degtyaruk
@hlogeon
Dec 04 2015 15:14
@Big-Shark
Самое главное тут, что он похоже не хочет меняться)
projct1
@projct1
Dec 04 2015 15:15
@hlogeon не, я хрочу расти, слушаю ваши рассужждения)
мб привести полный метод handle ? )
Maxim
@Big-Shark
Dec 04 2015 15:16
@rorc не надо, спасибо, а то и так скоро спать ложиться.
projct1
@projct1
Dec 04 2015 15:16
:P
ну мне реально хочется научиться нормально делать
Andrey Degtyaruk
@hlogeon
Dec 04 2015 15:18
Ну так прочитай про ViewComposer
projct1
@projct1
Dec 04 2015 15:18
@hlogeon да не, там не всё так просто
Roman Tsiupa
@dracony
Dec 04 2015 15:43
Апдейтнул сервер)
теперь https://phpixie.com на PHP 7 и HTTP/2
JhaoDa
@jhaoda
Dec 04 2015 15:45
Святые байты, да ты просто монстр!
Апдейтнуть на РНР7, это ж смелость нереальная...
Roman Tsiupa
@dracony
Dec 04 2015 15:46
при чем на халяву сертификат от letsencrypt =)
projct1
@projct1
Dec 04 2015 15:47
@dracony в чём фишка пэхэпиксие
Roman Tsiupa
@dracony
Dec 04 2015 15:47
на главной странице написано)
projct1
@projct1
Dec 04 2015 15:47
ну отличия от ларавеля
Roman Tsiupa
@dracony
Dec 04 2015 15:47
да и статьи на хабре регулярные)
мм ну как минимум ровная архитектура без статики и фасадов
работает в 10 раз быстрее
))
Maxim
@Big-Shark
Dec 04 2015 15:48
@dracony ой все
JhaoDa
@jhaoda
Dec 04 2015 15:49
И вроде бы всем уже объяснили, что это не статика и не фасады, но...
Да-да, опять статика и фасады
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:49
@dracony ахахаха, лол
projct1
@projct1
Dec 04 2015 15:49
ну а удобство?
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:49
@dracony покажи где в ларке статика есть :D
Roman Tsiupa
@dracony
Dec 04 2015 15:49
ну конечно не статика)) если в твоем кода ты пишешь :: значит статика
кароч)
заходи в наш чат)
JhaoDa
@jhaoda
Dec 04 2015 15:49
@rorc чувак, точно, переходи на пиксю!
JhaoDa
@jhaoda
Dec 04 2015 15:50
Будешь им мозг выносить
Roman Tsiupa
@dracony
Dec 04 2015 15:50
а то меня забанят
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:50
@dracony это значит, что срабатывает перехват вызова метода на ныжный метод контейнера, а не статика
Roman Tsiupa
@dracony
Dec 04 2015 15:50
и что с этого лол?
у тебя все равно в результате DI нет
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:50
@dracony с того, что в ларке нету статики
Roman Tsiupa
@dracony
Dec 04 2015 15:51
ты можешь получить зависимость из любого класа
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:51
@dracony да, например через DI в метод
Roman Tsiupa
@dracony
Dec 04 2015 15:51
а фасад это то же самое что в $GLOBAL писать
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:51
@dracony нет
Roman Tsiupa
@dracony
Dec 04 2015 15:51
лан)
я честно уже 100 раз делал тот же разговор)
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:52
@dracony фасад задефайнен в в конфигах, можно их вообще оттуда вырезать и ничего не изменится
Roman Tsiupa
@dracony
Dec 04 2015 15:52
будешь писать юнит тесты поймешь
ты прав
Maxim
@Big-Shark
Dec 04 2015 15:52
@dracony а когда у тебя container->get('router') и ты передаешь один контейнер, намного улчше?
projct1
@projct1
Dec 04 2015 15:52
:popcorn:
Roman Tsiupa
@dracony
Dec 04 2015 15:52
да
но у меня даже такого нет)
Maxim
@Big-Shark
Dec 04 2015 15:53
@dracony чем это лучше?
Roman Tsiupa
@dracony
Dec 04 2015 15:53
но всеравно лучше
тем что у тебя зависимость на $container который ты получаешь явно и явно видишь что он тебе может дать а что нет
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:53

будешь писать юнит тесты поймешь

@dracony наверно я чего-то не понимаю в этой жизни... http://docs.rudev.org/d/04bd3380f83148d56ada1e76a9e21900

Roman Tsiupa
@dracony
Dec 04 2015 15:53
но
такой контейнер тоже в задницу
так как у тебя нет строгого типа
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:54
т.е. нету?
Roman Tsiupa
@dracony
Dec 04 2015 15:54
так как $container->get() возвратить может любой тип
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:54
интерфейс передаёшь и получаешь результат - нужные данные от этого интерфейса
Roman Tsiupa
@dracony
Dec 04 2015 15:54
$container->get('router') -> \Router
$container->get('db') -> \DB
метод get() не возвращает конкретный тип
а что ему взумается
пот уже
$container->router()
$container->db()
намного лучше
потому что тогда тип строго задан
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:56
@dracony а не проще ли $continer->get(RouterInterface::class) ?
Roman Tsiupa
@dracony
Dec 04 2015 15:56
поэтому в пиксе нормальные фабрики
нет
потому что как выглядит сигнатура метода get() у тебя?
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:56
@dracony а по-моему это лучше
Roman Tsiupa
@dracony
Dec 04 2015 15:56
@return mixed
?
что это за типизация
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:56
@dracony хз
у меня шторм сам подсвечивает
достаточно установить DI плагин
Roman Tsiupa
@dracony
Dec 04 2015 15:57
откуда у тебя есть гарантия что в контейнере такой интерйфейс есть?
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:57
@dracony потому что я его зерегистрировал, логично вроде
Roman Tsiupa
@dracony
Dec 04 2015 15:57
получается у класа использующий твой контейнер
неочевидные зависимости
вот например
допустим
есть у иебе здоровая апликуха
ты ей передал контейнер
откуда тебе знать какие интерфейсы ей надо зарегать?
кроме как Ctrl+F по файлам лазить?
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:58
я откуда знаю?
Roman Tsiupa
@dracony
Dec 04 2015 15:58
угу
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:58
я вообще не знаю зачем передавать ей контейнер
Roman Tsiupa
@dracony
Dec 04 2015 15:59
вот в нас в пиксе простые нормальные фабрики
со строгими типами
без всяких магий
стрингов
плагинов ставить не надо
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 15:59
короче ниасилили, я понял
=)
Roman Tsiupa
@dracony
Dec 04 2015 15:59
лол
да фабрику труднее написать)
ее каждый раз писать надо
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:00
не труднее
Roman Tsiupa
@dracony
Dec 04 2015 16:00
не то что твой масив глобальный)
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:00
получается тот же DI кстати
Maxim
@Big-Shark
Dec 04 2015 16:00
@dracony эмм, а как быть с новыми классами которые ты сам зарегал в контейнере?
Roman Tsiupa
@dracony
Dec 04 2015 16:00
DI это не контейнер
это совокупность подходов
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:00
валидируешь аргумент замыкания, находишь сопоставимый класс в контейре и возвращаешь его
Roman Tsiupa
@dracony
Dec 04 2015 16:00
@Big-Shark не регать
это пункт номер 2
каждая фабрка отвечает за свое
тоесть ты не можешь из модуля для базы получить роутер
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:01
очень печально кстати
Roman Tsiupa
@dracony
Dec 04 2015 16:01
или из роутера темплейтинг
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:02
я например в базу пишу url текущей страницы для истории
Roman Tsiupa
@dracony
Dec 04 2015 16:02
разве что явно передать туда модуль темпейтинга и уже у него попросить
кстати
даже вот пимпл
рекаомендует делать не все в одном контейрене
а иерархию
тоесть
у тебя отдельный контейнер для например сервисов
отдельный для моделей и тд
и все они строятся контейренром выше уровня
а не один
Maxim
@Big-Shark
Dec 04 2015 16:04
@dracony стоп. ну гдето жже они должны регаться, или нет?
Roman Tsiupa
@dracony
Dec 04 2015 16:05
да
делаешь себе свой контейнер/фабрику
и сам себе там что хочешь то кадлуешь
твой бандл это просто интерйфейс
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:06
фабрика абстрактных фабрик в контейнере для фабрик +)
Roman Tsiupa
@dracony
Dec 04 2015 16:06
все что ты делаешь внтри меня не волнует)
@SerafimArts да
именно так
вместо болото
где тот де клас строит роутер, юзеров, миграции и все подряд
Maxim
@Big-Shark
Dec 04 2015 16:07
@dracony чего, то есть у меня для модуля должен быть свой контейнер? или фабрика?
Roman Tsiupa
@dracony
Dec 04 2015 16:07
просто трабла пхп в том что к нам все остановкой в 10 лет приходит
5 лен назад ти бы ларки App::make() показал кому-то
тебе бы сказали зачем это когда у меня синглтон есть
Maxim
@Big-Shark
Dec 04 2015 16:08
@dracony то есть типа AppFactory->getBullshit() ?
Roman Tsiupa
@dracony
Dec 04 2015 16:08
@Big-Shark да
даже не AppFactory
a
App->models()->bullshit()
App->services()->bullshit()->subbullshit()
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:09
@dracony даже php код с ошибками пишешь....
Roman Tsiupa
@dracony
Dec 04 2015 16:09
но ты вместо таких паравозов
Maxim
@Big-Shark
Dec 04 2015 16:09
@dracony омг, а как мне узнать, я хочу синглтон, или каждый раз разный класс? и как я могу получить булшить через ди, а не через ди в который приходит фабрика?
Roman Tsiupa
@dracony
Dec 04 2015 16:09
передавал бы только что нужно
__construct($subbullshit)
Maxim
@Big-Shark
Dec 04 2015 16:09
а что такое app у тебя?
Roman Tsiupa
@dracony
Dec 04 2015 16:10
что ты нащиваешь DI?
DI это прктика
а не вещь
есть много подходов к ДИ
один из них контейнер
Maxim
@Big-Shark
Dec 04 2015 16:10
депенденси енжекшен, внедрения зависимостей, когда я открываю класс, и сразу вижу от чего он зависит
Roman Tsiupa
@dracony
Dec 04 2015 16:10
ну
Maxim
@Big-Shark
Dec 04 2015 16:10
что передается в конструктор
Roman Tsiupa
@dracony
Dec 04 2015 16:10
щас прмер скину
Maxim
@Big-Shark
Dec 04 2015 16:10
что можно установить через сеттеры, и там нет такой фигня как ->get()
это не внедрение зависимостий, это тут самый булшит
Roman Tsiupa
@dracony
Dec 04 2015 16:11
вот
смотри
класс
он получает ОРМ
Maxim
@Big-Shark
Dec 04 2015 16:11
контейнер это контейнер, ди это ди
а еще не нажо жать ентер после каждого слова)
Roman Tsiupa
@dracony
Dec 04 2015 16:11
строится тут
вот билдер
это фабрика твоего бандла
она получает все зависимости
и строит твой класс
@Big-Shark я понял что ты назвал ДИ теперь) так вот контейнер тоже может делать ДИ
вот как в моем примере
Builder можеть быть как контейнер (если ты его целого передашь )
а вот для класса Tracker
он делает DI
Maxim
@Big-Shark
Dec 04 2015 16:13
$project = $this->orm->repository('project')->create(); вот это фигня, фикция ди, должно быть так public function __construct(ProjectRepositoryInterface $rep) {
Roman Tsiupa
@dracony
Dec 04 2015 16:14
ммм
у него зависимость на модуле
в чем тут проблема собственно
можно конечно передать сразу 2 репозитория
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:14
это мнимая проблема
т.е. она только теоретическая
Roman Tsiupa
@dracony
Dec 04 2015 16:15
но оно ничего не изменит
потому что
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:15
на практике ничего такого вообще не бывает
Roman Tsiupa
@dracony
Dec 04 2015 16:15
ORM->repository() работает как Registry pattern
а не как контейнер
Maxim
@Big-Shark
Dec 04 2015 16:15
в том что с темже успехом я могу использовать фасады, или вообше статичные классы, или даже просто обьявлять классы прям внутри, ты делаешь слишком большую зависимость
Roman Tsiupa
@dracony
Dec 04 2015 16:15
вобще не то
пфф
вот другой пример
Maxim
@Big-Shark
Dec 04 2015 16:16
зависимости должны быть сведены к минимому, а у тебя класс зависит от целого модуля, в котором непонятно что есть
Roman Tsiupa
@dracony
Dec 04 2015 16:16
построже
Orion55
@orion55
Dec 04 2015 16:16
:-)
Maxim
@Big-Shark
Dec 04 2015 16:16
А чего у тебя тайп хинтинга нигде нет?
и пхпдоков
@Big-Shark времени нет
я пока еще нестед сетс допиливаю
но я уже даже скрипт запилил который мне их тупо сгенерит
так как все из фабрик строится
можно легко трейснуть что к уда идет
фишка писать код безтаких контейнеров в том
что у мене все компоненты действительно зависимы только от того что ты передашь в конструктор компонента
Maxim
@Big-Shark
Dec 04 2015 16:19
@dracony эмм а что в ларе мешает так делать? Или в симфони?
Roman Tsiupa
@dracony
Dec 04 2015 16:19
ниодин компонент никогда не прсит какой то контейнер в надежде что там все будет
напрмер
Maxim
@Big-Shark
Dec 04 2015 16:20
@dracony в симфони контейнер вообше дикий, может делать почти любую магию (правда через юмл что не удобно)
тебе персонально ничто
хороший мастер пилой болт закрутит
но думаю иногда хочется чтобы в фреймворке код тоже нормальный был
особенно
если у тебя тимка с джуниками
которые с радостью будут из роутера темплейт рендерить
Maxim
@Big-Shark
Dec 04 2015 16:22
@dracony у меня тимка с идиотами )
Roman Tsiupa
@dracony
Dec 04 2015 16:22
если им позволить
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:22
@Big-Shark в дотан чтоль гамаешь? +))))
Roman Tsiupa
@dracony
Dec 04 2015 16:22
вот
Maxim
@Big-Shark
Dec 04 2015 16:22
@SerafimArts в симфони2 ) Там раков больше чем в дотане)
Roman Tsiupa
@dracony
Dec 04 2015 16:22
я вчера дебажил печальку на ларке
вот запилили свой фасад
а там же система какая: ти пилишь класс передаешь ему стрингом идентифактор что он проксирует
и он магией статические вызовы туда передает
вот я смотрю в коде
статический вызов
открываю класс
а внем методов тех нет
только имя класса прокси
Maxim
@Big-Shark
Dec 04 2015 16:24
@dracony по сути у тебя нет как такового контейнера, а много фабрик, и я почемуто не вижу интерфейсов, ведь в этом весь и прикол, что ты модешь написать get('cache') и вете вернется какойто класс, который както работает, а ты только знаешь что у него есть сет и гет, как у тебя это реализовать?
Roman Tsiupa
@dracony
Dec 04 2015 16:24
иду по коду искать где они региструруют клас для этого идентификатора
не нахожу
потому что оно хитро на рефлекшне прописано
пришлось
Maxim
@Big-Shark
Dec 04 2015 16:25
@dracony ну это как бы от незнания устройста фасадов в ларе)
Roman Tsiupa
@dracony
Dec 04 2015 16:25
по имени метода искать
и угадывать
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 16:26
@Big-Shark +1
Roman Tsiupa
@dracony
Dec 04 2015 16:26
nu vot zhe:
только instance приватный метод
я не люблю когда нет строгой типизации
твой get() это не ООП
метод должен возвращать конкрентный тип
вместо
->get('router') //@return mixed
->router() // @return \Router
Maxim
@Big-Shark
Dec 04 2015 16:28
@dracony я не говорил что я люблю гет, я бы даже так сказал, я его немного призераю)
Roman Tsiupa
@dracony
Dec 04 2015 16:28
вот эти get() set() это пережитки прошлого
$GLOBALS
то же самое
Maxim
@Big-Shark
Dec 04 2015 16:28
@dracony так, а что такое инстант, типа он создает класс?
фактически твой гет()
но спрятан
и без set()
вот а тут
Maxim
@Big-Shark
Dec 04 2015 16:30
@dracony https://github.com/PHPixie/Default-Bundle/blob/master/src/PHPixie/DefaultBundle/Builder.php#L84 а почему не колбек использовать?
Roman Tsiupa
@dracony
Dec 04 2015 16:30
все методы со строгой типизацией
чтобы легче было переопределить
когда ты расширяшь клас то просто меняешь метод
buildChtoto
Maxim
@Big-Shark
Dec 04 2015 16:31
@dracony эммм, ок, делаем коллейбл и там [$this, 'buildTracker']
былоб мне кажется логичней
Roman Tsiupa
@dracony
Dec 04 2015 16:31
и не надо думать как там все работает
Maxim
@Big-Shark
Dec 04 2015 16:31
в твиге такая система для расширения
Roman Tsiupa
@dracony
Dec 04 2015 16:31
мм
типа
    public function config()
    {
        return $this->instance(array($this, 'buildConfig'));
    }
?
Maxim
@Big-Shark
Dec 04 2015 16:32
@dracony так подожди, смотри, у меня есть 5 классов конфигов, как мне их быстро и удобно переключать можно? нужно придумывать свой вариант ?
@dracony return $this->instance('tracker', [$this, 'buildConfig']);
Roman Tsiupa
@dracony
Dec 04 2015 16:33
ну в той фабрике
где они строятся ( класс MyConfigs какой-то)
делаешь себе get()
но
Maxim
@Big-Shark
Dec 04 2015 16:33
@dracony ок, а можно както в моей классе переключать реализации класса из ядра допустим?
Roman Tsiupa
@dracony
Dec 04 2015 16:33
тут у тебя у них общий интерйейс
Config
так что ты не ломаешь ООП
ты знаешь что $myConfigs->get() всегда возвращает какойто \Config
а не \Router
@Big-Shark типа класс переопределить
ядра нет собственно
есть компоненты
тут все просто
твой проект расширяет класс \PHPixie\Framework
JhaoDa
@jhaoda
Dec 04 2015 16:35
Я понял. Сегодня пятница, он тяпнул пива с сосисками и благодушно просвещает нас, тёмных
Roman Tsiupa
@dracony
Dec 04 2015 16:35
так что ты можешь заменить фабрики а свои
конечно если ты хочешь подменить клас где-то в жопе
то придедтся всю цепку фабрик переопредедлять
там максимум 2-3
но скорее всего
это тебе надо будет только если там баг
а баг можно просто запостить)
вобщем я пришел сюда HTTP2 хвастатся
а вы меня в войну затянули)
кстати
LetsEncrypt разадет халявные ssl
D3-FC
@D3-FC
Dec 04 2015 17:04

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

  1. Например есть табличка медикаментов
  2. табличка Инвойса (фактуры)
    обе таблички связаны многие-ко-многим
    Нормально ли записать в промежуточную таблицу "медикаменты_инвойс" слудующие поля

medicine_id
invoice_id
price
quantity
Interest margins

KarmaBot
@KarmaBot
Dec 04 2015 17:04
@D3-FC, и тебе привет ;)
D3-FC
@D3-FC
Dec 04 2015 17:04
??
projct1
@projct1
Dec 04 2015 17:05
@D3-FC под промежуточными ты pivot таблицы имеешь в виду?
D3-FC
@D3-FC
Dec 04 2015 17:05
да
projct1
@projct1
Dec 04 2015 17:05
@D3-FC конечно нормально, а что смущает тебя?
D3-FC
@D3-FC
Dec 04 2015 17:06
честно говря ничего просто, хотелось узнать хороший ли это тон
@rorc спасибо кстати
KarmaBot
@KarmaBot
Dec 04 2015 17:06
Спасибо (+1) для @rorc принято! Текущая карма +3.
projct1
@projct1
Dec 04 2015 17:07
@D3-FC для этого как раз и есть return $this->belongsToMany('relation', 'table')->withPivot(['price', 'quantity'])
D3-FC
@D3-FC
Dec 04 2015 17:09
@rorc точно! Ещё раз спасибо! :)
KarmaBot
@KarmaBot
Dec 04 2015 17:09
Спасибо (+1) для @rorc принято! Текущая карма +4.
projct1
@projct1
Dec 04 2015 17:09
))
Kirill Nesmeyanov
@SerafimArts
Dec 04 2015 18:16
Ребят, пишу регулярку, нужно экранировать *text* и _text_. Она выглядит так:
/(?P<char>(?:_|\*))(.+?)(?P=char)/ replace to \\\$1$2\\\$1
теперь надо добавить игнорирование \* и \_ соответственно
заменил на /(?P<char>(?:^(?!\\\))(?:_|\*))(.+?)(?P=char)/ но почему-то не пашет
в чём трабла собственно?
Алексей
@sklyar
Dec 04 2015 18:25
Привет всем
Настраиваю почту от Яндекса. Не могу никак отправить письмо с сайта. Вот что в ответ приходит Connection to smtp.yandex.ru:465 Timed Out
Алексей
@sklyar
Dec 04 2015 18:38
Поправил конфиги
теперь отдаёт Failed to authenticate on SMTP server with username "reg@showroom56.ru" using 3 possible authenticators
Алексей
@sklyar
Dec 04 2015 19:19
есть кто?
как правильно настроить smtp от yandex?
Dinar Garipov
@garf
Dec 04 2015 19:56
@sklyar Я использую.
@sklyar Какое шифрование указываешь?
@sklyar В общем encryption надо ставить ssl
wiyfn
@wiyfn
Dec 04 2015 21:15
Как можно получить список всех постов и к-во комментариев для каждого поста
//Post model
public function сomments(){
    return $this->hasMany('App\Comment','comment_id');
}

//Comment model
public function post(){
    return $this->belongsTo('App\Post');
}
Victor Golovko
@siptik
Dec 04 2015 21:19
Привет всем. Есть ли готовое решение с пагинацией where id> x Limit 10?
KarmaBot
@KarmaBot
Dec 04 2015 21:19
@siptik, привет =)
Palchik
@palchik1985
Dec 04 2015 21:56
foreach ($numbers as $i => $number) {
    $client->number.$i = $number  
    // нужно чтоб динамически создавались свойства, $client->number1, ->number2 etc.
}
Есть мысли как это реализовать?
на выходе хочу получить добавление свойств number1, number2, number3 и тд, по количеству номеров которые пришли
бд mongoDb
или посоветуйте варианты. Загонять туда массив в одно свойство? А если один номер..
Victor Golovko
@siptik
Dec 04 2015 22:06
@palchik1985 не очень понятен смысл
не проще ли держать одно свойство numbers
и сделать метод
public function add_item($key,$value){
$this->numbers[$key] = $value
}
Palchik
@palchik1985
Dec 04 2015 22:27
@siptik да, собственно так и реализовал уже, пришел к тому же выводу
@siptik спасибо за подсказку
KarmaBot
@KarmaBot
Dec 04 2015 22:28
Спасибо (+1) для @siptik принято! Текущая карма +15.
Dinar Garipov
@garf
Dec 04 2015 23:27
@siptik Решение есть.
YourModel::where('id', '>', 'x')->paginate(10)
Victor Golovko
@siptik
Dec 04 2015 23:35
@gaaarfild окей, а как получить x?
ты же когда используешь пагинацию не пишешь limit и не высчитаваешь номер страницы. (есть готовое решение)
ты пишешт paginate(15)
да и paginate опирается на get параметр page
я думаю твое решение неправильное
Victor Golovko
@siptik
Dec 04 2015 23:40
@gaaarfild смысл такой:
page 1: id=>1, id <=10,
page 2 id=>11 , id<=20
а если ряды прорежённые, то может получиться так:
page 1: id=>5, id <=1044,
page 2 id=>1556 , id<=2000034