@laravel_pro

Страница 1400 из 2014
Vitaliy
25.05.2018
06:24:34
Да

Если коротко, то

https://github.com/DarkaOnLine/L5-Swagger

Nik
25.05.2018
06:26:07
Да
используете аннотации, или ямл?

Google
Nik
25.05.2018
06:26:12
аннотации :)

код читаемый остается? меня дико харит отсутствие автокомплита в аннотациях и неработающий реформат

Vitaliy
25.05.2018
06:28:44
Терпимо

Ruslan
25.05.2018
06:28:55
код читаемый остается? меня дико харит отсутствие автокомплита в аннотациях и неработающий реформат
на yii делали через анатации, вначале смотрелось монструозно, сейчас норм, привыкли и удобно

Nik
25.05.2018
06:29:27
на yii делали через анатации, вначале смотрелось монструозно, сейчас норм, привыкли и удобно
теже вопросы - автокомплит и реформат работают нормально с иерархическими аннотациями?

Ruslan
25.05.2018
06:30:32
у нас нет в анатациях автокомплита, все пишется как комментаций к методам в контроллере

описание моделей (definitions) идет в самих моделях

Nik
25.05.2018
06:35:58


спасибо за код

а в сторону ямла никто не смотрел?

https://paste.ofcode.org/ZZANMssWTbaeEChizjHppP
https://github.com/DarkaOnLine/L5-Swagger/issues/57

Google
Kaido
25.05.2018
06:49:46
кто-нибудь встречался с проблемой, что связанные модели не удаляются подобным образом? $topic->posts()->delete();
кажется нашел причину если в миграции использовать onDelete то ивенты deleting, deleted не вызываются

Nik
25.05.2018
06:52:02
onDelete ?

Pavel
25.05.2018
06:53:26
$table->integer('dialog_id')->unsigned()->nullable(); $table->foreign('dialog_id')->references('id')->on('dialogs')->onDelete('cascade');

вот так работает

Kaido
25.05.2018
06:57:41
ну суть в том, что я в модели ловлю ивент deleting

просто из таблицы идет удаление, без вызова ивентов

Pavel
25.05.2018
06:58:14
потому что связь

так и должно работать

Kaido
25.05.2018
06:59:12
ну это на самом деле совсем не очивидно, что из-за такого удаления связанных моделей, ивенты не вызываются)

я предполагал, что (в твоем например случае) при таком удалении для модели Dialog вызывается метод перед фактическим удалением)

Pavel
25.05.2018
07:00:01
слушай а какую ошибку тебе выдает когда ты вызываешь delete() на модели,

tochka
25.05.2018
07:01:32
Доброе утро, ребят подскажите какой пакет лучше (исходя из личного опыта) заюзать для многоуровневых категорий?

Pavel
25.05.2018
07:02:22
я предполагал, что (в твоем например случае) при таком удалении для модели Dialog вызывается метод перед фактическим удалением)
у меня такая тема, если я удаляю диалог, то у меня автоматически удаляются все сообщения в нем.

Kaido
25.05.2018
07:02:22
мне никакую ошибку не выдает, просто до ивента не доходит дело)) я хотел сделать удаление файлов поста поэтому я при удалении постов (ловлю ивент deleting, вызываю $post->files()->delete() , а для модели File ивент deleting тупо не вызывается)

Pavel
25.05.2018
07:02:27
если я удаляю пользователя

то удалаятся диалоги и сообщения

Maksim (Ellrion)
25.05.2018
07:03:26
ну это на самом деле совсем не очивидно, что из-за такого удаления связанных моделей, ивенты не вызываются)
Очень даче очевидно. Это же действие делает сама бд. Приложение об этом ничего не знает

Google
Kaido
25.05.2018
07:04:01
для массовых операций ивенты не работают
то есть если по одному буду удалять то заработает?

Maksim (Ellrion)
25.05.2018
07:04:17
Эвенты есть только у инстансов моделей

TSka
25.05.2018
07:04:36
Если будешь удалять через модель, то естественно заработает

А так у тебя удалением БД занимается

Kaido
25.05.2018
07:05:14
понял, пойду попробую, спасибо)

TSka
25.05.2018
07:09:08
Доброе утро, ребят подскажите какой пакет лучше (исходя из личного опыта) заюзать для многоуровневых категорий?
Смотря, что конкретно тебе нужно. Например, lazychaser/laravel-nestedset, если тебе нужен nested set.

tochka
25.05.2018
07:11:41
Смотря, что конкретно тебе нужно. Например, lazychaser/laravel-nestedset, если тебе нужен nested set.
Нужно реализовать бесконечное вложение категорий и подкатегорий и безболезненно их получать и продукты по ним. Пробовал стандартными связями ларавеля, получается только второй уровень получить, а на последующие уровни хотел построить рекурсию, но пока не получается, вот и начал смотреть в сторону пакетов

Nik
25.05.2018
07:12:45
забудь про рекурсию

TSka
25.05.2018
07:12:54
Примитивная таблица id, parent_id уже позволяет сделать бесконечную вложенность. А дальше уже от конкретных задач зависит

Nik
25.05.2018
07:13:22
nested sets или closure table. мне вторая более импонирует, гибче

Евгений
25.05.2018
07:15:09
В чем проблема?

Nik
25.05.2018
07:15:12
TSka
25.05.2018
07:16:00
nested sets и closure table - это модели хранения иерархии. По ним есть уже готовые пакеты для всего на свете, и laravel в том числе

Евгений
25.05.2018
07:16:04
Я nested sets подход бдал, и пакет для лары есть нормальный

tochka
25.05.2018
07:16:24
я о подходах
уже думал реализовать что-то типа нестед сет самостоятельно, но уж очень сильно не хочется изобретать велосипед, если есть уже готовые решения

TSka
25.05.2018
07:18:10
Не понятно, в чем проблема. id 1, parent_id 0, name root id 2, parent_id 1, name child1 id 3 , parent_id 2, name child2 Вот и три уровня

tochka
25.05.2018
07:18:10
В чем проблема?
никак не могу получить вложенность глубже второго уровня стандартными связями в ларавеле

TSka
25.05.2018
07:19:54
никак не могу получить вложенность глубже второго уровня стандартными связями в ларавеле
ну, у каждой категории есть отношения parent() belongsTo и childs() hasMany. Берешь любую категорию и получаешь из нее дочерние. Проблемы возникают только если нужно строить каталоги частичные или полные. Тогда лучше Nested sets

Google
tochka
25.05.2018
07:20:13
Не понятно, в чем проблема. id 1, parent_id 0, name root id 2, parent_id 1, name child1 id 3 , parent_id 2, name child2 Вот и три уровня
да, по структуре как это должно быть это работает, а вот когда получаю коллекцию категорий то получается категория -> дочерняя категория, а вот если у дочерней категории есть своя категория, то я ее уже не получаю

TSka
25.05.2018
07:22:32
А, ну понятно, нужно указывать в ленивой загрузке глубину вложенности, а заранее ее ты не можешь знать. Ищи готовый пакет с nested sets, он точно умеет то, что тебе надо с одним лишь минусом - очень долго перестраивает деревья при изменении категорий

Nik
25.05.2018
07:23:26
долго это понятие относительное :) формально там просто идет сдвиг на +2 части дерева

TSka
25.05.2018
07:26:18
ну, если тебе нужно получить все дерево категорий, то ты запрашиваешь как Categories::with('children', 'children.children', 'children.children.children'...). Или в модели указываешь protected $with = ['children'];, но тогда любая категория будет доставаться с полным древом дочерних, что тоже не всегда удобно

Admin
ERROR: S client not available

TSka
25.05.2018
07:27:26
долго это понятие относительное :) формально там просто идет сдвиг на +2 части дерева
ну, фактически это означает, что вместо одной категории мы правим всю ветвь

TSka
25.05.2018
07:28:57
Если собираешься постоянно дергать большими ветвями, то бери nested sets, он позволяет сильно сэкономить на запросах к БД.

tochka
25.05.2018
07:30:32
Если собираешься постоянно дергать большими ветвями, то бери nested sets, он позволяет сильно сэкономить на запросах к БД.
https://github.com/lazychaser/laravel-nestedset Вы имеете ввиду этот пакет или реализовывать самому?

TSka
25.05.2018
07:30:45
Ага, этот

tochka
25.05.2018
07:31:11
Ага, этот
спасибо Вам большое за помощь

TSka
25.05.2018
07:31:23
Просто почитай про nested sets, что это такое, и как работает. Чтобы понимать, как лучше использовать

tochka
25.05.2018
07:33:06
Просто почитай про nested sets, что это такое, и как работает. Чтобы понимать, как лучше использовать
сейчас с этого и начну, были когда-то проблемы с установленными пакетами, после этого я очень чательно подхожу к вопросу установки стороннего кода в свои проекты, так что для начала почитаю про нестед сеты, еще раз огромное спасибо

Anton
25.05.2018
07:47:31
А ещё есть подход маьериализед паз

Но его очень давно не видел в применении

https://packagist.org/packages/langaner/materialized-path

Google
Anton
25.05.2018
07:49:08
Даже пакет какой-то для лары есть

Александр
25.05.2018
07:49:22
коллеги, подскажите такой вопрос. Есть поле в определенном формате, но мне в запросе его перед сравнением нужно преоразовать в другой формат. Понимаю, что без замыкания не обойтись, но внутри как?

Александр
25.05.2018
07:51:31
неее. в базе хранится дата строкой вида 25 май, а мне нужно сравнить например с текущей датой, потому нужно 25 май сначала преобразовать в нормальный вид

хелпер самого преобразования уже есть

Александр
25.05.2018
07:53:42
мутатор насколько я понимаю преобразует уже все на выходе, или я ошибаюсь?

да, вернее ассемор

но в любом случае мне нужно наложить фильтр на это поле в правильном вормате

TSka
25.05.2018
07:55:17
https://laravel.com/docs/5.6/eloquent#local-scopes ?

Я так понял, это для поиска используется?

Александр
25.05.2018
07:55:46
в скопах тоже нужно пиать условие отбоа:)

Maksim (Ellrion)
25.05.2018
07:55:52
но в любом случае мне нужно наложить фильтр на это поле в правильном вормате
а почему ты неможешь не значение поля преобразовать а то с которым оно сравнивается? (вообще изначально я тебя понял не так и думал не о квери а о реквесте)

Александр
25.05.2018
07:56:21
да вот тоже думаю, что так проще. Но хочется на всяк случай и такое уметь

Maksim (Ellrion)
25.05.2018
07:57:07
да вот тоже думаю, что так проще. Но хочется на всяк случай и такое уметь
самому придется через whereRaw тогда писать и менять формат средствами бд

Александр
25.05.2018
07:57:33
Я так понял, это для поиска используется?
мне нужно определенные манипуляции сделать со строками, но отбор сделть по этому полю

TSka
25.05.2018
07:59:12
Тогда сильно проще сделать where('date', format_date(now())), чем преобразовывать дату в БД перед сравнением

Если сделать аксессор, скоуп и мутатор, можно вообще постоянно с карбоном работать и не думать, что там в БД хранится

Страница 1400 из 2014