@laravel_pro

Страница 565 из 2014
Андрэ
06.07.2017
19:30:21
Правильно - ты в каком смысле?

adikalon
06.07.2017
19:31:55
Правильно т.е. в соответствии с тем, что рассказывают в уроках в начале о MVC. Т.е. реализовывать подобное в моделях, для чего они, как я понял и предназначены. Я не могу чет въехать в это. Есть вариант создать отдельный класс для валидации, но тогда я не понимаю зачем нужна модель, кроме как ссылки на таблицу в БД

Peter
06.07.2017
19:33:21
Исходи из того, что каждый класс выполняет только одну функцию

Андрэ
06.07.2017
19:35:14
Модель тебе предоставляет доступ к данным

Google
Peter
06.07.2017
19:35:54
Модель это объект или данные с которыми ты оперируешь, они не обязательно хранятся в БД

Андрэ
06.07.2017
19:36:13
Блин, начал писать, а все написали) Удобно

adikalon
06.07.2017
19:36:30
Ну так манипуляции с данными тоже должны происходить в моделях или нет?

Peter
06.07.2017
19:36:42
Нет

adikalon
06.07.2017
19:36:44
а контроллер - просто передача данных в модель

Peter
06.07.2017
19:37:18
Посмотри что такое SOLID

Yan
06.07.2017
19:39:12
Правильно т.е. в соответствии с тем, что рассказывают в уроках в начале о MVC. Т.е. реализовывать подобное в моделях, для чего они, как я понял и предназначены. Я не могу чет въехать в это. Есть вариант создать отдельный класс для валидации, но тогда я не понимаю зачем нужна модель, кроме как ссылки на таблицу в БД
Изначально в классическом варианте MVC вся логика, как и работа с БД должна быть в модели, контроллер выступает только связующим звеном. В ВЕБе контроллер стал содержать в себе всю логику, в модели методы для работы с БД (как, например, в codeigniter), в таких фреймворках, как yii/laravel и методы для работы с БД перенесли в контроллер, классы модели бывают вообще пустыми. Но не всегда. Поэтому в ларе в основном, вся логика у тебя в контроллере, валидация и т.п., также у тебя запросы к БД, например, с помощью query builder у тебя тоже в контроллере, но внутри фреймворка, в его ядре, все эти запросы проходят через модели, даже если они пустые. В двух словах как-то так

F01134H
06.07.2017
19:40:12
веб не ограничивается mvc

почему вы путаете людей, это моя должность

Google
Yan
06.07.2017
19:40:42
В mvc вебе, mvc то придумали ещё в 70-х

F01134H
06.07.2017
19:40:45
отнимать работу нехорошо

Андрэ
06.07.2017
19:41:04
F01134H
06.07.2017
19:41:38
(з.ы. а в ларке не MVC, а MVCS)

Андрэ
06.07.2017
19:42:34
а что S значит? я правд не знаю

пойду погуглю

F01134H
06.07.2017
19:42:39
service

ну, по крайней мере это хорошая практика, юзать ларавел как MVCS

даже коробочный функционал с таким подходом написан

Андрэ
06.07.2017
19:43:21
Угу, загуглил.

VSKut
06.07.2017
19:43:25


мне зашло

удобная либа

F01134H
06.07.2017
19:43:37
маладэц

Андрэ
06.07.2017
19:44:01
Что это за exit у тебя там? О_о

Да и else тут лишнее, если местами блоки поменять и в условие ! добавить

adikalon
06.07.2017
19:45:52
Еще вопрос по аутентификации/авторизации. В ларавеле имеется встроенный механизм, лучше юзать его или самому писать? Он вообще гибкий там? Просто мне легче самому написать, чем разобраться как он устроен, не хотелось бы сейчас тратить время на разбор если он не подойдет. Может вопрос туповат, в кратце: вы используете встроенный механизм или пишите свой?

VSKut
06.07.2017
19:47:32
Что это за exit у тебя там? О_о
А чего нет? else для наглядности и читабельности - зачем мне отрицания строить?

Google
VSKut
06.07.2017
19:47:40
exit - заглушка

Андрэ
06.07.2017
19:47:41
Написать проще, чем использовать втроенный - означает, что ты даж 5 мин не потратил на его изучение)

А этого времени (ну примерно) хватает на то, чтобы понять, как там все просто)

Андрэ
06.07.2017
19:48:59
exit - заглушка
Завершать выполнение exit (die) не стоит. Есть свои обычные стредства. Бросай исключение, возвращай response() нужный

F01134H
06.07.2017
19:49:17
солидарен

adikalon
06.07.2017
19:49:28
А этого времени (ну примерно) хватает на то, чтобы понять, как там все просто)
в доке статья, которую больше 5ти минут читать. Плюс там как я понял имеются требования к БД. Реализован механизм редиректа на страницу авторизации, если не авторизован, + мне необходимо разделение по ролям. Как это все всунуть во встроенный я за 5 мин не пойму

ну если встроенный такой хороший, ок тогда возьмусь за чтение статьи

Андрэ
06.07.2017
19:50:30


F01134H
06.07.2017
19:50:38
ты ща возьмешься и напишешь трешак какой-нибудь, как и делает большинство новичков

Андрэ
06.07.2017
19:50:42
F01134H
06.07.2017
19:51:21
тот который без exit() :D

Андрэ
06.07.2017
19:52:03
Да и наверняка! написание своего велика займет времени больше, чем изучение доки

F01134H
06.07.2017
19:52:28
@negasus ты согласен со мной насчет MVCS то?

Андрэ
06.07.2017
19:52:31
тот который без exit() :D
Ну это пример в вакууме же

F01134H
06.07.2017
19:52:32


Google
Андрэ
06.07.2017
19:53:01
@negasus ты согласен со мной насчет MVCS то?
Я сторонник того, чтобы в контроллере было минимум кода. Я все, что могу в сервисы выбрасываю, да

Space
06.07.2017
19:53:27
можно структуру как-нибудь увидеть?
структура тривиальна: 1) таблица категорий (id, название) 2) таблица тегов (id, название) 3) таблица постов (id, заголовок, контент) 4) pivot таблица для связи постов с тегами (post_id, tag_id) надо в модели категории получить список всех тегов

Space
06.07.2017
19:54:37
да, hasManyThrough не подходит

F01134H
06.07.2017
19:56:13
т.е. посты относятся к категориям, а теги к постам?

Space
06.07.2017
19:57:22
у поста есть category_id

F01134H
06.07.2017
20:00:54
я правильно понял, что в каждом из постов, находящихся в одном разделе - всегда есть одинаковый набор тегов

Space
06.07.2017
20:01:12
нет, разный

Admin
ERROR: S client not available

F01134H
06.07.2017
20:01:31
эээ

тогда причем тут разделы вообще

Space
06.07.2017
20:01:55
разделы не причем

есть категрия, в которой несколько постов.

у каждого поста несколько тегов через pivot-таблицу

если брать пример из доков: https://laravel.com/docs/5.4/eloquent-relationships#has-many-through в моем случае пользователь привязан к нескольким странам через таблицу

а не через поле country_id

не так))

у постов несколько пользователей

Google
Андрэ
06.07.2017
20:08:23
Так а что, не получается в итоге этим методом получить? Я его конкретно не пользовал, но вроде просто должно быть? Не?

Если по аналогии с формумом - тебе надо для категоии получить все теги, которые имеют посты в этой категории, верно?

Space
06.07.2017
20:12:28
да

Андрэ
06.07.2017
20:15:36
Пост относится к одной категии, или может в нескольких состоять?

Space
06.07.2017
20:16:22
к одной

Андрэ
06.07.2017
20:29:28
Да, сходу оно работает только с однонаправленной связкой вроде

потестил. так как самому интересно, еще не трогал этот релейшн

тогда по идее можно попробовать самому запрос сконструировать

Space
06.07.2017
20:30:56
вот-вот)) тут либо писать свой релейшн, либо в нужном месте собирать массив

Андрэ
06.07.2017
20:31:41
А задача это получать - частая? Ну допустим, во фронте это видно постоянно, да?

Space
06.07.2017
20:31:57
нет, не частая

но мне тоже интересно как бы это сделать через отношения

даже со стороны производительности - чистый sql был бы быстрее

Андрэ
06.07.2017
20:37:11
ща ковыряюсь, интересно

Space
06.07.2017
20:43:48
могу скинуть дамп бд с данными, если поможет))

но я так понял что в релейшн нет связи через 2 таблицы

я уж все перебробовал)

Андрэ
06.07.2017
20:44:58
сек

select * from tags as t left join post_tag as pivot on pivot.tag_id = t.id and pivot.post_id in (select id from posts where category_id = 1) where pivot.tag_id is not null

Вот как то так

Блин, некрасиво без подстветки

Одним запросом все достаем, только id категории указываем

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