2014-02-03 5 views
0

Laravel 4.1 представил hasManyThrough отношения. Это предполагает, что 2 связаны с несколькими отношениями. Тем не менее я хотел бы получить отношения hasMany из отношения, принадлежащего отношению.Eloquent hasManyThroughOne

Project (id, contact_id, ...) 
Contact (id, ...) 
Address (id, contact_id, ...) 

Для каждого проекта я хотел бы получить все адреса.

Мне удалось это сделать, используя отношение belongsTo() и некоторую дополнительную стыковую таблицу. Тем не менее, отношение belongsTo связывает один объект, а не массив.

Так что мои мысли я либо нужно:

  1. ... иметь возможность переопределить поведение LIMIT 1 на belongsTo отношений
  2. ... или быть в состоянии отменить hasManyThrough для работы с принадлежит как промежуточное отношение.

ответ

1

Похоже, что вы пытаетесь настроить отношения между проектами и контактами «многие ко многим» между собой, с отношением «один к одному» между адресом и контактом. Если это так, вам нужно создать сводную таблицу «project_contact» с столбцами «project_id» и «contact_id», а также любые другие столбцы (timestamps() и т. Д.). Затем вы можете установить отношение «belongsToMany (« Project ») в контактах.

Я не уверен, что это то, что вам нужно, но оно решает проблему, насколько я ее понимаю.

+0

Я очень упростил свой вопрос. Ваш ответ действительно соответствовал бы моим потребностям, когда это было все, что я пытался выполнить. К сожалению, мне это действительно нужно, без добавления дополнительной сводной таблицы. –

+0

ОК, поэтому, если я правильно вас понимаю, у вас есть проект, в котором есть один пользователь, и у каждого пользователя есть несколько Адресов. Это верно? – iavery

+0

Это правильно. –