Доброго времени суток, за ранее спасибо за потраченное время. (За ранее: я знаю, что это можно и ручками через crossJoin сделать). В Laravel имеются такие системы: morphMany, morphMap, hasMany, hasManyThrough и тд, так вот, как при помощи использования одной из них реализовать следующую выборку: Имеется 3 таблицы: Articles, TextModules, TextModulesList. articles - id TextModules - id TextModulesList - article_id, module_id Необходимо заселектить все TextModules через TextModulesList по article_id Большое спасибо за ранее.
@Exort смотри в мануале Laravel отношения, там все подробно и доступно и на русском, и на английском с примерами, как создать модели, как создать методы в них, как создать миграции, кинуть ссылку на раздел в мануале???
если по теме нечего сказать, не оффтопь в теме --- Добавлено --- у меня не получается, я смотрел это всё
@Exort что не получается? Создать две модели как по мануалу? и потом PHP: return Article::All()->with('TextModules'); В свое время разбирался вот по этому мануалу http://www.itmathrepetitor.ru/laravel-5-5-shpargalka-po-otnosheniyam-v-eloquent/ Есть кой какие косяки но там сообразишь, делай как написано, что не получится или получится скажешь --- Добавлено --- @Exort Единственное что на мой взгляд сложное, в твоем вопросе, это найти в русском мануале этот абзац: Как уже упоминалось ранее, чтобы определить имя для таблицы присоединения отношений, Eloquent соединит два названия взаимосвязанных моделей в алфавитном порядке. Тем не менее, вы можете переопределить имя, передав второй параметр методу belongsToMany(): PHP: return $this->belongsToMany('App\Role', 'role_user'); В дополнение к заданию имени соединительной таблицы, вы можете также задать имена столбцов ключей в таблице, передав дополнительные параметры методу belongsToMany(). Третий аргумент — это имя внешнего ключа модели, на которой вы определяете отношения, в то время как четвертый аргумент — это внешний ключ модели, с которой вы собираетесь связаться: PHP: return $this->belongsToMany('App\Role', 'role_user', 'user_id', 'role_id'); Так как у тебя соединительная таблица не по Eloquent-овски обзывается, в остальном все должно быть без сучка и задоринки
Дружище, наверное ты меня не понял) У меня есть таблица, которая связывает статьи и текстовые модули. Она называется TextModulesList. Строки в этой таблице хранят ID статьи и ID текстового модуля, т.е. текстовые модули и статьи между собой никак не связаны, а только через эту таблицу. Мне нужно по ID статьи найти все связи в TextModulesList и на основании этих связей получить все TextModules.
Решил проблему при помощи hasManyThrough PHP: public function getTextsLists() { return $this->hasManyThrough('App\Text', 'App\TextsList', 'article_id', 'id', 'id'); } Спасибо за внимание.