Laravel по-русски
Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Однако ,если Вам нужны только id комментариев, то не проще ли идти от них:
$comments_ids = Comment::whereIn('post_id', $posts_ids)->lists('id');А, у вас n:m... Тут в одну строку я что-т не придумаю как сделать. Вот на ум приходит такое:
$posts = Post::with('comments')->get();
$posts->comments_ids = [];
$posts->each(function($post) use ($posts){ $posts->comments_ids[] = $posts->comments->lists('id');});
dd($posts->comments_ids );Eager loading: пользуйте with('comments')
Вот и я о том же - нужно искать решение по задаче. Оно вообще может быть простым, если реализовать тот минимум, что необходим и своими руками... ![]()
Поставьте проверку на получения массива данных от формы по полю статус. А то у Вас передаётся строка, уверен.
{{ Form::select('status[]', Polis::$status,null,array('class'=> 'form-control', 'multiple' => true)) }}Ну, я на самом деле понял чуть более широко.
Я думал, что у вас разные свойства для разных объектов и разные значения этих свойств могут быть (как в Яндекс маркете, паример: типов продуктов - бесконечность, свойств - бесконечность, связи у всех объектов - многие-ко-многим).
При подходе, что свойства и типы конечны - всё упрощается донельзя! Просто отображаете все свойства в форме и всё. Создавайте объекты последовательно, в соответствии со связями (сначала пациент, потом его атрибуты). Валидировать же желательно всё сразу, чтобы не было проблем с тем, что один объект создан, а на втором всё крашится (либо делать обработку и подстановку идентификаторов в случае сохранения чего-то).
Если нравится пакет от каталиста - возьмите его. Задача в целом достаточно разносторонняя и зачастую требует индивидуального подхода, ибо антипаттерн. То, как оно должно работать в том или ином случае предусмотреть, имхо, сложно. Сделать же чисто один из нескольких вариантов реализации - не принесёт славы...
Вот, посмотрите вот эту темку: https://laracasts.com/discuss/channels/ … -eav-model
Там и человек есть, который ведёт работу над подобным пакетом...
Ну, судя по всему, Вы всё правильно расписали. Вам интересно, как из этого сделать форму для заполнения свойств, отображать данные, формировать фильтр или ещё что? Какая именно проблема у Вас?
Если речь идёт о форме, то возьмите плагинчик типа select2 и сделайте typeahead поиск по свойствам + создание нового свойства, если не найдено. Тип поля - сделайте простой select для выбора значений (можно сделать и chain select на поле выбора названия свойства от типа). Значение свойства вводите в инпут, связанный с этим инпутом. Такую связку (поле выбора типа, ввода названия свойства + его значения) сделайте паттерном, который будет добавляться по нажатию кнопочки "добавить свойство". В итоге, когда происходит сохранение, то пробегаетесь по всем свойствам, сохраняете их и связываете с редактируемым объектом.
Когда отображаете данные, то ищите объект и загружаете его свойства - тут всё просто: пользуйте with(''). Тип поля у вас уже зафиксирован - можно использовать его, если требуется.
С фильтром тоже всё относительно просто: выводите все возможные связки свойств и значений. Тип поля для формирования фильтра у вас имеется...
Задача, на самом деле, для всякого рода e-commerce рядовая (как для формирвоании данных, так и для их хранения). Какого-то механизма для реализации всего этого из коробки можно поискать, но мне кажется разве что в разрозненном виде всё - придётся всё равно собирать. А раз так, то, как мне кажется, полезней будет собрать самому: будет понятней, как оно работает и проще будет поддерживать...
Создаёте все нужные модели, прописываете в них отношения друг с другом, строите нужные запросы. Рядовая задача. ![]()
Или в чём-то конкретном вопрос?
Вполне возможно, что у вас двойное хэширование. При авторизации хэшировать не нужно - нужно только передавать пароль. Класс авторизации уже захэширует при проверке.
Смотрите в сторону пароля. Как и где он у Вас хэшируется и хэшируется ли вообще? По хорошему, реализовать хэширование в mutator и проверить, что нигде больше не пользуется хэширование строки перед засовыванием в базу...
Что, собственно, и сделает Вам Homestead Vagrant без траты Вашего времени... ![]()
Ага, про это читал. К сожалению не вариант. Нужен простой способ, редактировать сразу 3-5-10 проектов.
Так нет проблем - Вам в пользование предоставлен виртуальный сервер, который без заморочек поднимается с любым количеством проектов одновременно, плюс без танцев с настройками веб сервера...
Рад был помочь.
По поводу мануала - правильное решение! Не стыдитесь читать мануал в первую очередь - зачастую там есть ответы на 85% вопросов. Если же ответ на вопрос не находится и не получается его самому решить, заходите в чат - там могут ответить быстрее и в большем объёме (порой даже кейс рассмотрят и дадут совет)...
DB:raw() используют для работы с выражениями.
$datefilter = DB::select("SELECT * FROM `contacts` WHERE ".DB::raw('DATE(`created_at`)')." BETWEEN ? AND ?", array('2013-01-08', '2014-12-10'));Попробуйте Homestead.
$contacts = Contacts::whereBetween('created_at', ['2013-01-08', '2014-12-10']);Ответил Вам на хэшкоде, ибо сначала увидел ссылку в чате...
Вопрос нагрузки на БД решаем как технологически (кэширование, распределение нагрузки по разным серверам и проч), так и с точки зрения взаимодействия пользователя с ресурсом (например, лоадить комменты по требованию - при достижения конца ограниченного списка, infinite scroll, etc).
При этом, если потребуется работать с этими данными в дальнейшем, то при такой нормализации придётся либо смириться с потерей старых данных, либо извращаться с работой с таким форматом, что в любом случае приведёт к геморрою (либо для заказчика, либо для разработчика).
При наличии кэширования, хранение данных в таком виде выйдет потом боком. Экономите на собственных нервах и времени...
Типа того
Если есть автоинкремент, то обратной сортировкой по id.
Храните сессии в memcached/redis/apc (конфиг session.php)
Ну, если Вы правильно заполнили конфиг для workbench, то в composer.json всё правильно пропишется. Нужно будет только придерживаться именования и namespace'ов. И тогда должно быть счастье.