Эмин
ну это только в том случае если у вас уже есть загруженная модель сайта
SarcasmIO
<простите, не проснулся>
Maksim (Ellrion)
Maksim (Ellrion)
ну и да там hasMany должно быть
Эмин
$site->themes
да возможно, с синтаксисом лары я еще очень плохо знаком
Эмин
но принцип везде одинаковый
Александр
$site->themes()->get()?
да, модель есть. Правда я так не делал никогда. Я для вопроса чуть упросил реальные запросы. На самом деле там еще есть подзапрос. И с ним я не пойму как это будет. Я сначала получаю основную тематику, на основании ее я получаю связанные подтематики, а потом хочу получить привязаный к ним сайт
Александр
вот так в модели
Александр
public function mainthemeedit() { return $this->hasMany(Theme::class, 'main_theme', 'id')->with('site'); } public function site() { return $this->belongsToMany('App\Site'); }
Александр
а так в контроллере
Александр
$themes = Theme::with( 'mainthemeedit','site' ) ->where( 'main_theme', 0 ) ->get();
Maksim (Ellrion)
выбери отдельно свои все темы которые могут быть добавлены для сайта. как тебе надо но без with(site) $themes = Theme...->get() и во вьюхе foreach $themes as $theme if $site->themes->contains($theme) чекбокс включен
Александр
Спасибо большое! Вторую часть я вроде понял, а вот про hasMany не понял.. Оно же вроде работает по общему ключу в таблицах. А у меня в таблицах нет общего ключа, но есть промежуточная таблица для связи
Эмин
$site->themes->contains($theme) каждый раз будет запрос генерить в цикле?
Anonymous
Почему свежая установка Laravel показывает Whoops, looks like something went wrong.
Anonymous
?
invariance
или еще что то в этом духе
SarcasmIO
потомушо права не установил
или cp .env.example .env php artisan key:generate
invariance
или так да
invariance
но вроде как он работает без этого
invariance
там конфиги по умолчанию есть
SarcasmIO
без ключа вроде как нет
invariance
ключ вроде не обязателен был
invariance
в 5.4
invariance
типо, он рекомендуется, а то будет несекьюрно шо пздц
Anonymous
Как выяснилось, без ключа он не заводится.
invariance
Невероятно.
invariance
Мб в 5.5 что то поменяли...
Maksim (Ellrion)
вообще он после инстала сам это делает. видимо у тебя композер как то не доработал
SarcasmIO
у меня часто секция post install валится(
Maksim (Ellrion)
ну без причины она же тоже не валится
SarcasmIO
╭─systemfailure@arch /var/www ╰─$ laravel --version Laravel Installer 1.3.6 ╭─systemfailure@arch /var/www ╰─$ laravel new tests Crafting application... Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 68 installs, 0 updates, 0 removals - Installing doctrine/inflector (v1.2.0): Loading from cache { ... }
invariance
фарт ты что такое творишь
invariance
непотребство
SarcasmIO
╭─systemfailure@arch /var/www ╰─$ laravel --version Laravel Installer 1.3.6 ╭─systemfailure@arch /var/www ╰─$ laravel new tests Crafting application... Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 68 installs, 0 updates, 0 removals - Installing doctrine/inflector (v1.2.0): Loading from cache { ... }
Generating optimized autoload files > @php -r "file_exists('.env') || copy('.env.example', '.env');" [InvalidArgumentException] Script "post-install-cmd" is not defined in this package run-script [--timeout TIMEOUT] [--dev] [--no-dev] [-l|--list] [--] [<script>] [<args>]... Application ready! Build something amazing.
SarcasmIO
может быть, он ждет Script "post-install-cmd" is not defined in this package а в фреймворке он давно уже "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], называется
Maksim (Ellrion)
и всё ок будет
SarcasmIO
да, действительно ;)
Antonio
А можно тупой вопрос? В доке есть примечание: There is no need to bind classes into the container if they do not depend on any interfaces. The container does not need to be instructed on how to build these objects, since it can automatically resolve these objects using reflection.
Antonio
какие именно классы можно не биндить вручную?
Antonio
ну тоесть Если объявляю класс app\Services\MyService и хочу его использовать в контроллере, мне надо его прописывать в провайдере? Или можно просто сдалть что-то вроде public function store(Request $request, MyService $serv) ?
invariance
дат гуд квешн
Александр
ага это я туплю там belongsToMany верно всё. но имя связи всё равно во множественном числе надо
Огромное спасибо! Сам бы никогда не додумался. Все сделал, все работает! Еще раз спасибо
Arcos
$validator = Validator::make($request->all(), [ Эту конструкцию по идеологии только в контроллере юзать можно или феншуй позволяет юзать его в других частях логики приложений?
Arcos
Всем привет 😊
SarcasmIO
тут смотря что в вашем понимании должен делать контроллер, валидация как таковая точно не является частью бизнес логики, помимо контроллера можно встретить ее или ее зачаточное состояние где-то в ValueObject
Arcos
Ну вот как вариант: есть логика импорта фалйа, там приходят поля. Я могу написать велосипед по валидации импортируемых данных, а могу использовать валидатор
Юрий
$validator = Validator::make($request->all(), [ Эту конструкцию по идеологии только в контроллере юзать можно или феншуй позволяет юзать его в других частях логики приложений?
А смотря что вы хотите этим делать. Если валидируете пользовательские данные - валидируйте в запросе например. Если ответ от какого-то сервиса - то в той обертке, которая у вас занимается запросами к этому сервису. И т.д.)
Maksim (Ellrion)
какие именно классы можно не биндить вручную?
ну если понимать как контейнер резолвит зависимости то становится очевидно какие можно не биндить. Самый простой вариант это класс без зависимостей и который не нужен как синглтон
Antonio
уже понял в чем была проблема.пхпшторм некорректно создал корневое пространство для класса, поэтому не бинилост
Arcos
Нет, например проверить что пришло в входящем csv поле int или false
Maksim (Ellrion)
Нет, например проверить что пришло в входящем csv поле int или false
считаю что валидатор можно использовать где хочится.
Maksim (Ellrion)
другое дело что сам фасад не стоит использовать где попало
Maksim (Ellrion)
проще всего заинжектить ValidationFactory в конструкторе. ну или если проброшен контейнер. в том же форм реквесте $factory = $this->container->make(ValidationFactory::class); //... $validator = $factory->make(...)
Maksim (Ellrion)
это к чему?
Antonio
А чтобы в сервисе иметь доступ к app и биндить другие сервисы, что надо сделать?
Maksim (Ellrion)
А чтобы в сервисе иметь доступ к app и биндить другие сервисы, что надо сделать?
в сервис другие классы и сервисы лучше через конструктор инжектить
Maksim (Ellrion)
тот же контейнер можно заинжектить так
Maksim (Ellrion)
нет можно конечно еще и через сеттер. но это только тогда когда понимаешь почему надо так а не иначе
Arcos
проще всего заинжектить ValidationFactory в конструкторе. ну или если проброшен контейнер. в том же форм реквесте $factory = $this->container->make(ValidationFactory::class); //... $validator = $factory->make(...)
Я чето не понял. Если фасад не юзать (а он и не даст его юзать где либо кроме контроллера), то что какой класс экстендить?
Arcos
Или прям в констукторе от контроллера передавать?
Arcos
Тогда как в юниттестах передавать класс валидатора ?
Arcos
Посмотрел валидатор вызвать через new. Но тогда нужно транслейтор указывать
Arcos
А его фиг знает откуда дергать
Das
Ребят подскажите пожалуйста, как опредилить есть ли определенный день недели в промежутке времени, Php laravel carbon etc..
Maksim (Ellrion)
Я чето не понял. Если фасад не юзать (а он и не даст его юзать где либо кроме контроллера), то что какой класс экстендить?
> а он и не даст его юзать где либо кроме контроллера он это кто? > то что какой класс экстендить тут не распарсил, сори. короче попробуй как то свой вопрос как то иначе задать. а суть написаного мною выше, что если у тебя есть некий сервис SomeService который у себя внутри хочет что то валидировать через валидаторы ларовские, то нужно что бы например так было http://joxi.ru/MAj8z4ivXZQWme
Maksim (Ellrion)
соответственно потом просто инжектишь этот сервис в метод контроллера например и зависимости разрешаются
Arcos
ок, а как быть с юнит тестами?
Maksim (Ellrion)
ок, а как быть с юнит тестами?
а что с ними? http://joxi.ru/p27DRQc0jEGxA7