Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Приветствую уважаемое сообщество!
В компанию на full time ищутся разработчики, работающие с laravel!
Все подробности можно узнать в вакансии на hh: http://hh.ru/vacancy/13413895. Туда же прошу слать отклики. В сопроводительном письме прошу указать, что с сайта laravel.ru.
Всем большое спасибо и успехов в делах!
Ищу разработчика, имеющего знания и навыки работы с Laravel 4/5, знающего что такое миграции, очереди, less, gulp, bower, npm, composer, git и активно использующий все эти базовые знания на практике. Приветствуется хорошее знание SQL, навыки разработки архитектуры баз данных, мышление ORM сущностями (объекты, их свойства и правильные связи между объектами), мастерское владение Eloquent. Задачи по вёрстке сводятся к грамотному использованию twtr bootstrap (в основном проекты по написанию различного рода информационных систем, где нет дизайнерских изысков - строгие и лаконичные интерфейсы). Плюсом будут уверенные звания JavaScript (базис - знание jQuery и навыки использования распространённых библиотек).
Необходимо наличие 4-6 часов в день, доступность по skype в рабочее время по Москве, ответственность, умение правильно оценивать свои силы для решения предлагаемых задач.
Взаимодействие по Time & Material. Имеется постоянный поток новых проектов и поддержка уже сделанных. Вся работа ведётся в трекере (Jira), где ставятся задачи, оцениваются и отмечается их выполнение. Там же можно вести учёт затраченного времени.
Для более продуктивного общения - прошу подготовить для обзора примеры собственного кода с описанием интересных для Вас моментов.
Пишите на email smgladkovskiy at gmail.com или в чате (ник тот же).
Это понятно, можно и чистый PHP код в SQL запросом вставить! Но вопрос все же про Eloquent !!!
Eloquent в построениях запросов наследуют query builder, а следовательно, (почти) всё, что может QB может и Eloquent. Это упрощает использование, так как по сути, Eloquent, будучи ORM движком, решает вопрос использования записей таблиц как объектов, а колонок таблиц - как свойств этих объектов, а так же вопрос отношений между объектами. В остальном (в особенности, при построении запросов) - это тот же QB, только взгляд со стороны.
Вот Вам выдержка из мануала:
Note: All methods available on the query builder are also available when querying Eloquent models.
Не думайте, что Eloquent - это серебрянная пуля. Это просто дополнительный слой абстракции, помогающий Вам быстрее писать код. Когда Вы столкнётесь с построением крупного высоконагруженного решения, вероятнее всго (при должной архитектуре), Вы будете уходить от ORM...
$tag = Tag::where('name', '=', 'sometag')->firstOrFail(); // получаем запись тега
$posts = $tag->posts; // посты
$videos = $tag->videos; // видео
Использование Eloquent не накладывает на Вас ограничений в использовании Query Builder'а.
Ограничьте ввод ещё и указанием mime-типов:
'avatar' => 'mimes:jpeg,bmp,png'
$object->related()->select('related.column_one', 'related.column_two')->get()
Как-то так, если память не изменяет...
Вы по-английски читать умеете?
Задача принадлежит контакту: Task belongs to Contact
Задача принадлежит компании: Task belongs to Company
Где Вы в этих предложениях увидели множественное число? Одна задача принадлежит одному контакту и компании. Соответственно, когда хотите получить эти данные, то и обращайтесь к соответствующим свойствам с учётом множественности числа:
$task->company;
Что ж Вы бездумно копируете то, что Вам предлагают сделать, не задумываясь о том, что это вообще такое? Что же за отношение к другим? Вы хотя бы себя уважайте (раз плюёте на других) и не задавайте одних и тех же вопросов, ответы на которые заложены в основах той тематики о которой спрашиваете, а вам посоветовали их (эти основы) почитать/изучить! Прилагайте усилия сами, уважайте чужое время!
У Вас контакт и компания - это свойство задачи, судя по структуре БД. Соответственное, перепешите связи в модели задачи:
public function contact()
{
return $this->belongsTo('Contact', 'id_cont');
}
public function company()
{
return $this->belongsTo('Company', 'id_com');
}
Почитайте тщательно про логику ОРМ, её семантику, смысл, лексику - будет проще работать с Eloquent
На большом количестве данных могут быть тормоза при пользовании вышеописанного метода. Вот Вам статейка для затравки: https://www.scribd.com/doc/2569355/Geo- … with-MySQL
Смотрите мануал. Там есть информация о том, как управлять зависимостями. Вам нужен sync(). Можно обойтись без цикла, одним запросом.
Связи же остаются в моделях те же?
Да.
У Вас структура БД неправильная. Для связей многие-ко-многим (книги-авторы, книги-рубрики) нужны pivot таблицы. Поправьте миграции. Должно быть что-то в этом роде:
книги
название
фото
книги-авторы
книга_id
автора_id
авторы
имя
фамилия
книги-рубрики
книга_id
рубрика_id
рубрики
название
Тогда складирование данных не будет смущать ни Вас, ни Eloquent (вопросы 1.*).
Зависимости вытягивайте при запросе с помощью with('authors', 'categories') (вопрос 2).
Читайте мануал (вопрос 3).
И в самом конце Вы вышли-таки на принципы построения архитектуры БД. Почитайте лучше что-нибудь касательно реляционных БД и работы с ними. Рекомендую Мартина Грабера SQL.
Ну, раз хотите подробностей, то потрудитесь чуток и сами распишите побольше подробностей. В каких обстоятельствах заметили ошибку, где она происходит (продакшен/девелопмент окружение), какие настройки делали для перехода на ssl, какой веб сервер обслуживает запросы, как настроен, как сами ссылки формируете, которые работают не так? И ещё будет масса вопросов. Если Вы распишите всё подробно, то уже в вашем вопросе будет 80% ответа. Если сами не найдёте, то Вам помогут…
Настройте веб сервер для работы с ssl.
Если Вам не известен SQL, то почему бы не воспользоваться Eloquent или, на худой конец, query builder'ом?
Переопределите соответствующие константы в модели:
<?php
class YourModel extends Eloquent {
/**
* The name of the "created at" column.
*
* @var string
*/
const CREATED_AT = 'post_date';
/**
* The name of the "updated at" column.
*
* @var string
*/
const UPDATED_AT = 'post_modified';
}
Что я хочу сделать сказал же "Через пост вытащит данные комента" Задача моя точно такая же,но в другом виде. Я специально cделал пример с постом и коментом,так будет легче понятно и вам и мне. Мы на правильном пути
Вы хотите вытащить данные коммента из коллекции постов? Какого именно коммента? какого именно поста? Какие граничные условия? Для чего именно это делается? Конкретно и предметно давайте, а то у Вас сферический конь в вакууме и Вы задаётесь вопросом, как далеко он улетит, если он наестся десятью кило гороха и пропердится...
Если задлача так и стоит - вывести все посты и все комменты к ним на одной странице, то именно перечислениями коллекций и отображением данных (через вьюшки), Вы данную задачу и решите.
Что именно у Вас не получается и какая именно задача перед Вам стоит? Я не спрашиваю, как Вы решили эту задачу решить, а именно первоначальные, так сказать, бизнес-требования. Например, "отобразить все комментарии к посту в списке с отображением даты, автора и содержания" - вот так.
Распишите нормально отношения:
Class Post extends Eloquent {
public function comments()
{
return $this->hasMany('Comment','posts_id');
}
В коде при выгрузке постов (выгружаете коллекцию), у Вас будут в каждой модели в этой коллекции ещё комменты (коллекции).
$posts = Post::with('comments')->get();
foreach($posts as $post)
{
$comments_of_posts[$post->id] = $post->comments->toArray();
}
И вот $comments_of_posts содержит массив с комментами для постов.
Если Что-то в данной конструкции Вам не нравится - тогда озвучивайте задачу. Что Вы хотите сделать? И почему именно так это намереваетесь реализовать?
Тогда проверяйте, как у Вас всё прописано в модели. Ну и ошибки покажите. А то никак не удаётся отрастить телепатические интерфейсы...
Почитайте про Domain Driven Design и как вариант имплементации этого подхода - использование Command Bus.
Всё можно найти на laracasts.
Ну и заходите в чатик, пообщаемся про это..:)
Блин, так вопрос был - показать только данные коммента? Так в третьем сообщении у Вас и выводятся данные коммента. То, что они в json форматируются, так это от того, что коллекцию к строке приводите. Выведите нормально:
echo $post->comment->id;
echo $post->comment->comment;
echo $post->comment->post_id;