Эмин
ну это только в том случае если у вас уже есть загруженная модель сайта
SarcasmIO
<простите, не проснулся>
Maksim (Ellrion)
Maksim (Ellrion)
ну и да там hasMany должно быть
Эмин
но принцип везде одинаковый
Александр
$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)
Maksim (Ellrion)
выбери отдельно свои все темы которые могут быть добавлены для сайта. как тебе надо но без with(site)
$themes = Theme...->get()
и во вьюхе
foreach $themes as $theme
if $site->themes->contains($theme) чекбокс включен
Александр
Спасибо большое! Вторую часть я вроде понял, а вот про hasMany не понял.. Оно же вроде работает по общему ключу в таблицах. А у меня в таблицах нет общего ключа, но есть промежуточная таблица для связи
Эмин
$site->themes->contains($theme)
каждый раз будет запрос генерить в цикле?
Maksim (Ellrion)
Maksim (Ellrion)
Anonymous
Почему свежая установка Laravel показывает Whoops, looks like something went wrong.
Anonymous
?
invariance
invariance
или еще что то в этом духе
invariance
или так да
invariance
но вроде как он работает без этого
invariance
там конфиги по умолчанию есть
SarcasmIO
без ключа вроде как нет
invariance
ключ вроде не обязателен был
invariance
в 5.4
invariance
типо, он рекомендуется, а то будет несекьюрно шо пздц
Anonymous
Как выяснилось, без ключа он не заводится.
invariance
Невероятно.
invariance
Мб в 5.5 что то поменяли...
Maksim (Ellrion)
вообще он после инстала сам это делает. видимо у тебя композер как то не доработал
SarcasmIO
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
Maksim (Ellrion)
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)
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
дат гуд квешн
Александр
Antonio
SarcasmIO
Arcos
$validator = Validator::make($request->all(), [
Эту конструкцию по идеологии только в контроллере юзать можно или феншуй позволяет юзать его в других частях логики приложений?
Arcos
Всем привет 😊
SarcasmIO
тут смотря что в вашем понимании должен делать контроллер, валидация как таковая точно не является частью бизнес логики, помимо контроллера можно встретить ее или ее зачаточное состояние где-то в ValueObject
Arcos
Ну вот как вариант:
есть логика импорта фалйа, там приходят поля. Я могу написать велосипед по валидации импортируемых данных, а могу использовать валидатор
Dmitriy
Serik
Maksim (Ellrion)
какие именно классы можно не биндить вручную?
ну если понимать как контейнер резолвит зависимости то становится очевидно какие можно не биндить.
Самый простой вариант это класс без зависимостей и который не нужен как синглтон
Antonio
уже понял в чем была проблема.пхпшторм некорректно создал корневое пространство для класса, поэтому не бинилост
Arcos
Нет, например проверить что пришло в входящем csv поле int или false
Maksim (Ellrion)
Maksim (Ellrion)
другое дело что сам фасад не стоит использовать где попало
Maksim (Ellrion)
проще всего заинжектить ValidationFactory в конструкторе. ну или если проброшен контейнер. в том же форм реквесте
$factory = $this->container->make(ValidationFactory::class);
//...
$validator = $factory->make(...)
Maksim (Ellrion)
это к чему?
Antonio
А чтобы в сервисе иметь доступ к app и биндить другие сервисы, что надо сделать?
Maksim (Ellrion)
Maksim (Ellrion)
тот же контейнер можно заинжектить так
Maksim (Ellrion)
нет можно конечно еще и через сеттер. но это только тогда когда понимаешь почему надо так а не иначе
Arcos
Arcos
Или прям в констукторе от контроллера передавать?
Arcos
Тогда как в юниттестах передавать класс валидатора ?
Arcos
Посмотрел валидатор вызвать через new. Но тогда нужно транслейтор указывать
Arcos
А его фиг знает откуда дергать
Das
Ребят подскажите пожалуйста, как опредилить есть ли определенный день недели в промежутке времени, Php laravel carbon etc..
Maksim (Ellrion)
соответственно потом просто инжектишь этот сервис в метод контроллера например и зависимости разрешаются
Arcos
ок, а как быть с юнит тестами?